簡體   English   中英

刪除文件中的所有行,直到與字符串一致

[英]Delete all lines in file until line with string

我正在編寫一個用於編輯 file.txt 的腳本。 我有一個字符串名稱:

str_name = 'abcd'

我的文件有很多行。 我刪除了str_name之前的所有行,並在文件行中留下了str_name和下面的所有行。

file = open(local_filename, "r")
lines = file.readlines()
for line in lines:
    if str_name in line:
        print("Find")
        start = lines.index(line)
        lines = lines[start::1]
        break
    else:
        print("Not found")
file.close()
file = open(local_filename, "wt")
for line in lines:
    file.write(f"{line}")
file.close()

為避免將所有文件讀入 memory,您可以這樣做

with open(local_filename, "r") as f, open(local_filename + ".new", "w") as outf:
    found = False
    for line in f:
        if str_name in line:
            found = True
        if found:
            outf.write(line)

– 即跟蹤您是否找到了所需的行,如果找到了,開始將它們寫入另一個文件。

如果需要,您可以在最后執行os.rename()以將新文件替換到位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM