python中的文件操作
文件的類型
1.文件是存儲在輔助存儲器上的數據序列,是數據存儲的一種形式
2.文件的展現形式為文本文件和二進制文件,本質上,所有文件都是二進制形式存儲的
3.文本文件由單一特定編碼組成的文件,如UTF-8編碼。由於存在編碼,也被看成是存儲着的長字符串,比如.txt,.py文件等。
4.直接由比特0和1組成,沒有統一字符編碼,比如.png,.avi文件等
文件的打開操作關閉
文件的使用包括文件的打開-文件的操作(讀取和寫入)-文件的關閉(特別注意文件的打開和文件的操作的區別)
文件的打開
文件名就是為了能夠找到文件。
比如一個文件的路徑為D:\python\f.txt 那在文件中應該寫成 "D:/python/f.txt" "D:\\python\\f.txt"。使用/或\\來代替\
當源文件同目錄時可以省路徑。
文件的打開方式
文件的打開模式 |
|
---|---|
'r'(read)
|
只讀模式,默認值,如果文件不存在,返回FileNotFoundError |
'w'(write)
|
覆蓋寫模式,文件不存在則創建,存在則完成覆蓋 |
'x'(create)
|
創建寫模式,文件不存在則創建,存在則返回FileExistsError |
'a'(append)
|
追加寫模式,文件不存在則創建,存在則在文件最后追加內容 |
'b'
|
二進制文件模式 |
't'
|
文本文件模式,默認值 |
'+'
|
與r/w/x/a一同使用,在原功能基礎上增加同時讀寫功能 |
前面r,w,x,a選擇的是打開的模式,后面的b,t選擇的是文件類型,前后搭配使用。
# 以文本形式只讀打開,加上encoding='utf-8'是因為打開中文文件可能會出錯
tf = open("f.txt","rt",encoding='utf-8')
# 以二進制形式只讀打開
bf = open("f.txt","rb")
文件內容的讀取
操作方法 | 描述 |
---|---|
|
讀入全部內容,如果給出參數,讀入前size長度 |
|
讀入一行內容,如果給出參數,讀入該行前size長度 |
|
讀入文件所有行,以每行為元素形成列表。如果給出參數,讀入前hint行 |
# 文件的全文本操作
fo = open(f.txt,'r')
txt = fo.read() # 一次讀入,統一處理
fo.close()
fo = open(f.txt,'r')
txt = fo.read(2) # 按數量讀入,逐步處理
while txt !="":
txt = fo.read(2)
fo.close()
# 文件的逐行操作
fo = open(f.txt,'r')
for line in fo.readlines(): # 一次讀入,分行處理
print(line)
fo.close()
fo = open(f.txt,'r')
for line in fo: # 分行讀入,逐行處理
print(line)
fo.close()
文件內容的寫入
操作方法 |
|
---|---|
|
向文件寫入一個字符串或字節流 |
|
將一個元素全為字符串的列表寫入文件 |
|
改變當前文件操作指針的位置,offset含義如下:0-文件開頭;1-當前位置;2-文件結尾 |
fo = open("f.txt","w+") # 打開f.txt,即可讀又可寫
ls = ["小紅","小明","李華"]
f.writelines(ls)
fo.seek(0) # 指針在文件的結尾,讓指針重新回到文件的開頭,讀取才有輸出
for line in fo:
print(line)
fo.close()
>>>小紅小明李華
# 文件的寫入如果需要空格換行需要自己加入" "和"\n",不然都是以緊湊的形式寫入
文件的關閉
<變量名>.close