1. 程式人生 > >文件-讀、寫、追加已經文件操作

文件-讀、寫、追加已經文件操作

截取 字符 模式 分享圖片 報錯 數據 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()會替換文件,而且可能會存在亂碼。所以修改需全部讀入內存再進行修改,之後再保存覆蓋。

文件-讀、寫、追加已經文件操作