繁体   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