7. 修改文件的兩種方式
一、修改小文件
1、打開一個文件,獲取到文件所有內容
2、對內容進行修改:替換、寫SQL、列表分割等
3、清空原來文件的內容
4、把新內容寫入
f = open('username.txt','a+')
f.seek(0)
all_str = f.read() #讀取所有內容,占內存較大
print(all_str)
new_str = all_str.replace('4567889','123456')
f.seek(0) #此時上方read已讀到文件最后,清空操作要重新seek到文件開頭
f.truncate() #清空文件
f.write(new_str)
f.close()
#在每個用戶名前面加上syz_
f = open('username.txt','a+')
f.seek(0)
all_str = ''
for line in f:
lines = 'syz_' + line
all_str += lines
f.seek(0)
f.truncate()
f.write(all_str)
f.close()
for line in f.readlines():把文件中的所有內容轉換成列表放到列表中,占用內存較大
for line in f: 是一行一行的讀取內容,占用內存較小
二、修改大文件時
這種方法不用開辟一塊內存來存文件中的所有數據,直接每一行寫入另外一個文件,寫完之后刪除重命名。
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('花','flower')
fw.write(new_line)
os.remove('words') #刪除文件
os.rename('.words.bak','words') #改名
補充:
f.write() #只能寫字符串,對與列表中的元素,只能循環寫入
f.writelines() #自動循環寫入列表、字符串

浙公網安備 33010602011771號