【问题标题】:Delete all lines in file until line with string删除文件中的所有行,直到与字符串一致
【发布时间】:2021-06-25 13:01:11
【问题描述】:

我正在编写一个用于编辑 file.txt 的脚本。我有一个字符串名称:

str_name = 'abcd'

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

【问题讨论】:

  • line = file.readlines() 后跟 for line in file: 没有意义。只需删除line = file.readlines()

标签: python string file


【解决方案1】:
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()

【讨论】:

    【解决方案2】:

    为避免将所有文件读入内存,您可以这样做

    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() 以将新文件替换到位。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2022-07-08
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多