文件-讀、寫、追加已經文件操作
阿新 • • 發佈:2018-04-15
截取 字符 模式 分享圖片 報錯 數據 read 全部 p s
讀文件:r
f=open(‘test.txt‘,mode=‘r‘) for line in f: print(line) f.close()
print本身會換行,文本自帶一個\n,所以有換行
二進制讀取:rb
寫文件:w,w會創建新文件,有同名則刪除內容再寫入
f=open(‘test1.txt‘,mode=‘w‘,encoding="gbk") #unicode會自動轉碼位gbk f.write("unicode編碼寫入gbk文件") f.close()
二進制寫文件:wb,wb也會創建文件,有同名則刪除內容再寫入
圖片,音樂,視頻等寫入需用wb模式,二進制模式
二進制模式寫字符串到問文件,會報錯。提示需要二進制數據,非字符串
f=open(‘test2.txt‘,mode=‘wb‘) #unicode會自動轉碼位gbk f.write("unicode編碼寫入gbk文件") f.close()
解決以上問題,我們需要用encode方法,encode方法不傳參python3默認用utf-8進行編碼
f=open(‘test2.txt‘,mode=‘wb‘) #unicode會自動轉碼位gbk f.write("二進制模式寫字符串到文件,需要先進行編碼".encode(‘gbk‘)) f.close()
文件追加:a 或ab,源文件用二進制模式追加必須用ab模式,否則亂碼
f=open(‘test3.txt‘,mode=‘a‘,encoding=‘gbk‘) #unicode會自動轉碼位gbk f.write("這是追加部分內容") f.close()
混合模式:
- r+,讀的模式打開文件,支持寫入,即讀寫模式
- w+,寫的模式打開文件,支持讀取,即寫讀模式,w+也會將原有文件清楚
文件操作:
- fileno()返回文件句柄再內核中的索引值,IO多路復用會用到
- flush()把文件從內存buffer裏強制刷新到硬盤,close()時會自動保存到硬盤
寫入文件,但是內容打開是空白
flush()後會存入硬盤
- readable()判斷是否可讀
以w模式打開,判斷是否可讀
- readline()讀取一行,即遇到\r或\n結束
- seek()把操作文件的光標移動到指定位置
seek是按字節移動光標,至於移動多少個字符,與文件編碼有關,gbk移動兩個字節位一個字符,utf8移動三個字節算一個字符,read是按字符讀取
- seekable()判斷文件是否可進行seek操作,如設備是不可seek的
- tell()返回當前文件操作光標
- truncate()從指定位置截取文件到末尾,不指定位置則從當前位置截取
- writable()判斷文件是否可寫
修改文件
先f.seek(),再write()會替換文件,而且可能會存在亂碼。所以修改需全部讀入內存再進行修改,之後再保存覆蓋。
文件-讀、寫、追加已經文件操作