Python 修改文件
阿新 • • 發佈:2018-04-22
trunc () all 修改文件內容 類型 style lis utf-8 readlines
一、有時候我們會遇到在寫入文件後,其實內容並未被寫到文件裏面的問題
#原因是內容先寫到緩沖區,緩沖區滿時,才寫入磁盤 #解決:用f.flush()強制把緩沖區裏面的數據寫到磁盤上 fw = open(‘username.txt‘,w) fw.write(‘測試‘) fw.flush()
二、修改文件簡單直接的方法(replace()),此方法當文件內容較多時,效率不高,會出現內存溢出的情況
1、打開一個文件,獲取到文件的內容read方法(返回類型是str)
2、對內容進行修改
3、清空原來的內容truncate方法
4、把新的內容寫到文件
f= open(‘username.txt‘,‘a+‘) f.seek(0)#a+模式文件指針默認在文件末尾,用seek(0)將文件指針放到開頭 all_str = f.read()#返回類型是str,當文件內容較多時,效率不高 new_str = all_str.replace(‘123456‘,‘789012‘)#替換文件內容
f.seek(0)
f.truncate()#清空文件內容 f.write(new_str)#將修改後的文件內容寫入文件 f.close()#關閉文件
修改文件內容中舉例:給文件中的用戶名前統一加值test_
f = open(‘username.txt‘,‘a+‘) f.seek(0) all_str = ‘‘#每次循環的時候把字符串拼接起來,然後最後寫入文件for line in f:#f.readlines()把文件裏面所有的東西一次都讀出來放到list裏面,文件大的話效率不高 new_line = ‘test_‘ + line all_str += new_line f.seek(0) f.truncate()#清空文件內容 f.write(all_str) f.close()
三、以上修改文件方法當文件小時用起來是比較方便的,但文件大時效率不高,以下介紹一種效率比較高的方法
1、打開兩個文件 2、a文件,一行一行修改 3、寫一行寫到b文件 4、a.txt a.txt.bak 5、刪除a文件,b文件的名字改為a文件名#f.write()只能寫字符串 # f.writelines()循環寫入,會幫助咱們循環list寫入 import os with open(‘words‘,encoding=‘utf-8‘) as fr,open(‘.words.bak‘,‘w‘,encoding=‘utf-8‘) as fw: for line in fr: new_line = line.replace(‘測試‘,‘test‘) fw.write(new_line) os.remove(‘words‘)#刪除文件 os.rename(‘.words.bak‘,‘words‘)#改名
Python 修改文件