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

 

讀文件:rpython

f=open('test.txt',mode='r')
for line in f:
    print(line)
f.close()

print自己會換行,文本自帶一個\n,因此有換行編碼

二進制讀取:rbspa

寫文件:w,w會建立新文件,有同名則刪除內容再寫入code

f=open('test1.txt',mode='w',encoding="gbk")
#unicode會自動轉碼位gbk
f.write("unicode編碼寫入gbk文件")
f.close()

二進制寫文件:wb,wb也會建立文件,有同名則刪除內容再寫入視頻

圖片,音樂,視頻等寫入需用wb模式,二進制模式blog

二進制模式寫字符串到問文件,會報錯。提示須要二進制數據,非字符串索引

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()

混合模式:utf-8

  • 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()會替換文件,並且可能會存在亂碼。因此修改需所有讀入內存再進行修改,以後再保存覆蓋。

相關文章
相關標籤/搜索