整理了網絡上的一些方法,通常有兩種方法:
第一種:是先把文件讀入內存,在內存中修改後再寫入源文件。網絡
例子:將內容包含「123」的全部行刪去:.net
with open('C:/Users/lai/Desktop/1.txt','r') as r:
lines=r.readlines()
with open('C:/Users/lai/Desktop/1.txt','w') as w:
for l in lines:
if '123' not in l:
w.write(l) blog
第二種:咱們能夠使用 open() 方法把須要修改的文件打開爲兩個文件,而後逐行讀入內存,找到須要刪除的行時,用後面的行逐一覆蓋。實現方式見如下代碼。
with open('file.txt', 'r') as old_file:
with open('file.txt', 'r+') as new_file:
current_line = 0
# 定位到須要刪除的行
while current_line < (del_line - 1):
old_file.readline()
current_line += 1
# 當前光標在被刪除行的行首,記錄該位置
seek_point = old_file.tell()
# 設置光標位置
new_file.seek(seek_point, 0)
# 讀須要刪除的行,光標移到下一行行首
old_file.readline()
# 被刪除行的下一行讀給 next_line
next_line = old_file.readline()
# 連續覆蓋剩餘行,後面全部行上移一行
while next_line:
new_file.write(next_line)
next_line = old_file.readline()
# 寫完最後一行後截斷文件,由於刪除操做,文件總體少了一行,原文件最後一行須要去掉
new_file.truncate()內存
---------------------
版權聲明:本文爲CSDN博主「qq_31135027」的原創文章,遵循CC 4.0 by-sa版權協議,轉載請附上原文出處連接及本聲明。
原文連接:https://blog.csdn.net/qq_31135027/article/details/78908559it