python之文件操作總結


文件:數據的抽象和集合

  • 文件是存儲在輔助存儲器上的數據序列
  • 文件是數據存儲的一種形式
  • 文件展現形態:文本文件和二進制文件

文本文件 VS. 二進制文件

  • 文件文件和二進制文件只是文件的展示方式
  • 本質上,所有文件都是二進制形式存儲
  • 形式上,所有文件采用兩種方式展示

文本文件

  • 由單一特定編碼組成的文件,如UTF-8編碼
  • 由於存在編碼,也被看成是存儲着的長字符串
  • 適用於例如:.txt文件、.py文件等

二進制文件

  • 直接由比特0和1組成,沒有統一字符編碼
  • 一般存在二進制0和1的組織結構,即文件格式
  • 適用於例如:.png文件、.avi文件等

文件的打開關閉

文件處理的步驟: 打開 - 操作 - 關閉

rng
file_object = open("filename", "openmode")
... #操作
file_object.close()
with open("filename", "openmode") as file_object:
	... #操作
  • filename:文件路徑及名稱,當與源文件同目錄是可省略路徑
  • openmode:打開模式,文本or二進制,讀or寫

打開模式

openmode details
'r' 只讀模式,默認值,如果文件不存在,返回FileNotFoundError
'w' 覆蓋寫模式,文件不存在則創建,存在則完全覆蓋
'x' 創建寫模式,文件不存在則創建,存在則返回FileExistsError
'a' 追加寫模式,文件不存在則創建,存在則在文件最后追加內容
'b' 二進制文件模式
't' 文本文件模式,默認值
'+' 與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能

文件內容的讀取

operation details
f.read(size=-1) 讀入全部內容,如果給出參數,讀入前size長度
f.readline(size=-1) 讀入一行內容,如果給出參數,讀入該行前size長度
f.readlines(hint=-1) 讀入文件所有行,以每行為元素形成列表,如果給出參數,讀入前hint行
f.write(s) 向文件寫入一個字符串或字節流
f.writelines(lines) 將一個元素全為字符串的列表寫入文件
f.seek(offset) 改變當前文件操作指針的位置,offset含義如下:0 – 文件開頭; 1 – 當前位置; 2 – 文件結尾

文件的全文本操作

一次讀入,統一處理

fo = open(fname,"r")
txt = fo.read() 
...#對全文txt進行處理
fo.close()

按數量讀入,逐步處理

fo = open(fname,"r")
txt = fo.read(2)
while txt != "":
	#對txt進行處理
	txt = fo.read(2)
fo.close()

文件的逐行操作

一次讀入,分行處理

fo = open(fname,"r")
for line in fo.readlines():
	print(line)
fo.close()

分行讀入,逐行處理

fo = open(fname,"r")
for line in fo:
	print(line)
fo.close()

數據文件的寫入

fo = open("output.txt","w+") 
ls = ["China", "France", "America"]
fo.writelines(ls)
fo.seek(0)
for line in fo:
	print(line)
fo.close()

使用json模塊

.json 文件中存儲的數據結構為列表字典

json.dump() 用來存儲數據到json文件中,接受兩個實參:要存儲的數據和用於存儲數據的文件對象

import json

numbers = [1, 2, 3, 4, 5, 6]
filename = 'number.json'
with open(filename, 'w') as f_obj:
    json.dump(numbers, f_obj)

則number.json文件中的內容的格式與python中一樣,為列表[1, 2, 3, 4, 5, 6]

json.load() 用來從json文件讀取數據到內存中

import json

filename = 'number.json'
with open(filename, 'r') as f_obj:
    numbers = json.load(f_obj)

則numbers為列表[1, 2, 3, 4, 5, 6]

Reference

  1. Python語言程序設計: http://www.icourse163.org/learn/BIT-268001
  2. Eric Matthes. Python Crash Course[M]. https://book.douban.com/subject/26284937

< 完 >
轉載請注明原文鏈接:< https://www.cnblogs.com/tzhao/p/9855232.html >,謝謝!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM