一、文件操作的流程:
#1. 打開文件,得到文件句柄並賦值給一個變量 #2. 通過句柄對文件進行操作 #3. 關閉文件
具體步驟如下:
f=open('test.txt',encoding='utf-8') #打開文件 data=f.read() #文件操作 print(data) f.close() #關閉文件
二、open()函數的具體用法:
open函數最常用的使用方法如下:文件句柄 = open('文件路徑', '模式',編碼方式)。
1、關於文件路徑
#文件路徑:主要有兩種,一種是使用相對路徑,想上面的例子就是使用相對路徑。 #另外一種就是絕對路徑,像' C:/Users/shu/Desktop/python/test.txt'
2、關於打開模式:
# r 以只讀方式打開文件。這是默認模式。文件必須存在,不存在拋出錯誤 #rb 以二進制格式打開一個文件用於只讀。 #r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。讀完就追加。 #w 打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 #w+ 打開一個文件用於讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。 #a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。 #a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
注:后面有帶b的方式,不需要考慮編碼方式。有帶+號的,則可讀可寫,不過它們之間還是有區別的
下面附上各種方法的代碼,便於更深刻理解各種模式:

#原來文件內容是: 自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿. 1.只讀模式r: f=open('test.txt','r') data=f.read() print(data) #自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿. f.close() 2.只寫模式,w (存在會覆蓋原來內容) f=open('test.txt','w') f.write('作者:倉央嘉措') f.close() #寫完后原來的內容全都不見了,只剩下'作者:倉央嘉措'. 3、追加模式,a f=open('test.txt','a') f.write('作者:倉央嘉措') f.close() #寫完內容如下:自恐多情損梵行,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.作者:倉央嘉措 4、以r+模式打開 f=open('test.txt','r+') f.write('作者:倉央嘉措') print(f.read()) # 輸出為" ,入山又怕誤傾城.世間安得雙全法,不負如來不負卿." f.close() #寫完內容為 “ 作者:倉央嘉措,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.” #為什么輸出和寫完內容會這樣呢? 解釋這個只要知道緊跟光標的位置就可以明白了。 首先,以r方式打開光標都會在最開始的位置,這時候執行f.write('作者:倉央嘉措') ,這時候就把原來的‘自恐多情損梵行’覆蓋了。這時候光標移動到','之前, 緊接着進行print(f.read())。就會把后面剩下的文本內容打印出來。所以輸出就是:" ,入山又怕誤傾城.世間安得雙全法,不負如來不負卿." 整個程序完成后, 整個文本內容就成了;“ 作者:倉央嘉措,入山又怕誤傾城.世間安得雙全法,不負如來不負卿.”(光標!!)
3、關於編碼方式:
#1.win系統默認是gbk編碼的,所以桌面生成的TXT之類的都是gbk編碼的。
#2.出現亂碼正常都是原文件的編碼方式和打開指定的編碼不一致所致
三、關閉文件:
不要小看這一步,因為我們讀取文件是把文科讀取到內存中的,如果我們沒關閉它,它就會一直占用系統資源,而且還可能導致其他不安全隱患。還有一種方法可以讓我們不用去特意關注關閉文件。那就是 with open()
with open('test.txt','a+') as f: f.write('作者:倉央嘉措') print(f.read())