文件操做

文件操做
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()等函數就要從新生成新的句柄再對文件操做
相關文章
相關標籤/搜索