文件的數據是存放於硬盤上的,因而只存在覆蓋、不存在修改這么一說,我們平時看到的修改文件,都是模擬出來的效果,具體的說有兩種實現方式。
一、方式一
將硬盤存放的該文件的內容全部加載到內存,在內存中是可以修改的,修改完畢后,再由內存覆蓋到硬盤(word,vim,nodpad++等編輯器)。
import os
with open('37r.txt') as fr, \
open('37r_swap.txt', 'w') as fw:
data = fr.read() # 全部讀入內存,如果文件很大,會很卡
data = data.replace('tank', 'tankSB') # 在內存中完成修改
fw.write(data) # 新文件一次性寫入原文件內容
# 刪除原文件
os.remove('37r.txt')
# 重命名新文件名為原文件名
os.rename('37r_swap.txt', '37r.txt')
print('done...')
done...
二、方式二
將硬盤存放的該文件的內容一行一行地讀入內存,修改完畢就寫入新文件,最后用新文件覆蓋源文件。
import os
with open('37r.txt') as fr,\
open('37r_swap.txt', 'w') as fw:
# 循環讀取文件內容,逐行修改
for line in fr:
line = line.replace('jason', 'jasonSB')
# 新文件寫入原文件修改后內容
fw.write(line)
os.remove('37r.txt')
os.rename('37r_swap.txt', '37r.txt')
print('done...')
done...
總而言之,修改文件內容的思路為:以讀的方式打開原文件,以寫的方式打開一個新的文件,把原文件的內容進行修改,然后寫入新文件,之后利用os模塊的方法,把原文件刪除,重命名新文件為原文件名,達到以假亂真的目的。