python中的檔案操作總結
阿新 • • 發佈:2018-12-17
目錄
檔案:資料的抽象和集合
- 檔案是儲存在輔助儲存器上的資料序列
- 檔案是資料儲存的一種形式
- 檔案展現形態:文字檔案和二進位制檔案
文字檔案 VS. 二進位制檔案
- 檔案檔案和二進位制檔案只是檔案的展示方式
- 本質上,所有檔案都是二進位制形式儲存
- 形式上,所有檔案採用兩種方式展示
文字檔案
- 由單一特定編碼組成的檔案,如UTF-8編碼
- 由於存在編碼,也被看成是儲存著的長字串
- 適用於例如:.txt檔案、.py檔案等
二進位制檔案
- 直接由位元0和1組成,沒有統一字元編碼
- 一般存在二進位制0和1的組織結構,即檔案格式
- 適用於例如:.png檔案、.avi檔案等
檔案的開啟關閉
檔案處理的步驟: 開啟
- 操作
- 關閉
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) | 讀入檔案所有行,以每行為元素形成列表 |
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()