1. 程式人生 > >Python 修改文件

Python 修改文件

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 修改文件