標籤:utf-8 style move username run pen 方便 div 問題
一、有時候我們會遇到在寫入檔案後,其實內容並未被寫到檔案裡面的問題
#原因是內容先寫到緩衝區,緩衝區滿時,才寫入磁碟#解決:用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.bak5、刪除a檔案,b檔案的名字改為a檔案名稱#f.write()只能寫字串# f.writelines()迴圈寫入,會協助咱們迴圈list寫入import oswith 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 修改檔案