文件常見的讀寫模式
w 以寫方式打開,
W 文件若存在,首先要清空,然后(重新)創建
a 以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )
讀取文件內容
open 讀取所有內容
使用open打開文件后一定要記得調用文件對象的close()方法。
file = open('thefile.txt')
file.close( )
with open('ecord.txt','a+',encoding = 'utf-8') as f:
f.write(str+'\n')
寫完成自動關閉
寫入數據
file_object = open('thefile.txt', 'w')
file_object.write(all_the_text)
file_object.close( )
寫文本文件
output = open('data', 'w')
寫二進制文件
output = open('data', 'wb')
追加寫文件
output = open('data', 'w+')
寫入多行
file.writelines(strings)
注意,調用writelines寫入多行在性能上會比使用write一次性寫入要高。
文件打開模式 w+ r+ a+ 區別和辨析
w+ 打開文件並讀寫:
1. 文件存在,則清空(也即寫入空);
2. 文件不存在,則創建文件 ;
3. 文件流定位到開始位置, 所以read() 會得到空。
r+ 打開文件並讀寫:
1. 文件存在,打開文件,文件指針定位到文件開始位置;
2. 文件不存在, 則報錯文件不存在。
a+ 打開文件並讀寫:
1. 文件存在,打開文件,文件指針定位到文件開始位置,但不清空;
2. 文件不存在,創建文件;
3. 打開后讀取時,在文件開頭位置,
4. 寫入時,添加到文章末尾,並且指針位於添加后的末尾,所以再次讀取會亂碼。
另外:
1. w 打開文件寫入,也會清空文件,如果使用read(),則報錯;a 打開文件添加,數據流添加到文件末尾,而不是w模式的清空后,添加到文件末尾。
2. b可以附加到上述的字母后,形成rb, rb+, wb等等模式,針對二進制文件,比如exe, elf, jpeg格式的文件,進行文件操作; 在unix 類型的系統上,text格式與二進制的處理相同,但是非unix類型的系統上,換行格式不同,所以需要用加b模式來在指定是否是二進制。