文件操做 https://www.cnblogs.com/c-x-m/p/7756498.html 操做文件三步 1 產生文件句柄 2 操做文件句柄 3關閉文件 文件是一個可跌代對象,在使用文件路徑時儘可能使用相對路徑,不適用絕對路徑 #with open() as: 使用with語法對文件進行讀取,不用使用close()關閉。同時對多個文件操做,對file1讀取,對file2覆蓋寫入
with open('file.txt', encoding='utf-8') as fd1, \ open('file2.txt', encoding='utf-8', mode='w') as fd2: print(fd1.read()) fd2.write('qwe123')
fd = open(r"路徑", enconding='編碼', mode='模式') fd文件句柄
fd = open(r"E:\面授\python\項目代碼練習等\test.txt", encoding='utf-8', mode='r') content = fd.read() print(contend) fd.close() mode(模式): r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b
r 只讀模式,光標默認在文件首,使用read() w 寫模式,注意有w就會先將文件清空後再write() a 追加 append,默認將光標移動到文件末尾,換行須要本身手動加'\n' r+ 讀寫模式,先讀 後寫 注意無論讀多少字符,只要讀事後有‘+’就會將光標移到文件尾(經常使用的讀寫模式) rb 讀非文本文件,如圖片等其餘格式文件mode裏若是有b. encoding就不能給了 wb 寫非文本文件,如對圖片等文件進行寫操做mode裏若是有b. encoding就不能給了 注意:帶w的將會清空文件,帶+的會操做事後光標會移動到文件末尾 rb, wb, ab, bytes若是處理的是非文本文件, mode裏若是有b. encoding就不能給了 a+ 追加讀寫 ab 追加寫 r+b 讀寫非文本文件 w+b 寫讀非文本文件 a+b 追加讀寫非文本文件 去除文件中讀出的\n用.strip() #read() 不寫參數表示返回讀全文內容 r模式下是按字符讀取的。 rb模式是按照字節取的(一個英文佔一個字節,一箇中文佔三個字節)大文件禁用,由於會讀出全部內容 用for合理 #read(n) 讀取n個字符,返回讀取的內容,注意單位是字符 #readline() fd.readline() 一行一行讀取,每調用一次讀出一行,全部行讀完了讀出的都是空格s #readlines() fd.readlines() 將每一行做爲列表的元素讀出,想去除讀出的\n加 .strip() #for循環 最好 在內存中只佔一行 經常使用的遍歷文件
fd = open('file.txt', encoding='utf-8', mode='r') for i in fd: print(i) fd.close()
#fd.flush() 將緩存中的數據寫入磁盤 #write(line) 將line的內容寫入,若是沒有文件自動建立,常與fd.flush(),將句柄中的緩存寫入磁盤中,返回值是寫入的字符長度。
fd = open('file.txt',encoding='utf-8', mode='w') fd.write('hello')
#tell() 告訴指針的位置
fd = open('file.txt',encoding='utf-8', mode='w') fd.write('hello') print(fd.tell()) fd.close()
#seek(參數1,參數2) fd.seek(),移動光標位置單位是bity字節。當有換行時會被截斷無返回值,seek的兩個參數意義是,參數1:偏移量。參數二有三個值0表示文件開頭, 1表示當前位置,2表示文件末尾。第二個參數默認爲0。如seek(0)表示移動光標到文件開頭,seek(0,2)移動光標到文件末尾。seek(2,1)相對當前位置向右偏移兩個字節,seek(-1,2)光標移到文件倒數第一位 注意:當使用seek()函數後就報編碼錯誤,多是使用truncate()函數將字節算錯。致使,重算節取字節便可 #truncate() 截取文件。fd.truncate()保留光標前內容,刪除光標後面的內容。 #truncate(12) 保留12個字節bity,其他的內容刪除。 文件權限mode不寫默認爲 讀r windows默認gbk編碼 Linux默認utf-8編碼格式 pycharmv 編碼錯誤報錯 改文件 文件修改只有兩種方式: 1 經過中間變量存儲,再從新刷進文件中 2 建立新文件後更改,再把文件更名 更改文件時的5個步驟。 1 打開源文件,產生文件句柄 2 建立新文件,產生文件句柄 3 讀取源文件,進行修改寫入新文件 4 將源文件刪除 5 將新文件重命名
file3中的內容,要求將文中的全部「難」改成「易" 行路難 行路難 多歧路 今安在 長風破浪難有時 直掛雲帆難滄海 #導入os模塊 import os with open('file3.txt', encoding='utf-8', mode='r') as fd,\ open('file3.bak', encoding='utf-8', mode='w')as fd2: for oldfile in fd: newfiel = oldfile.replace('難', '易') fd2.write(newfiel) os.remove('file3.txt') os.rename('file3.bak', 'file3.txt')
注:文件更名後,不能再用更名前的文件句柄了,若是想使用read()等函數就要從新生成新的句柄再對文件操做