【问题标题】:Edit specific line in a big file编辑大文件中的特定行
【发布时间】:2018-09-20 07:44:22
【问题描述】:

我想在特定行中编辑一个大文件。 所以在编辑之前阅读整个文件不是一个好主意,这就是我不这样做的原因 想用:

myfile.readlines()

我必须阅读每一行检查其中是否有特殊内容,然后我必须编辑这一行。

到目前为止,我正在阅读每一行:

file = open("file.txt","r+")
i = 0
for line in file:
    if line ......:
        //edit this line
        //this is where i need help


file.close()

所以问题是: 如何编辑 If 语句中的当前行,例如: 如果当前行是“test”,我想将其替换为“test2”,然后将“test2”写回到文件中“test”之前的行中

【问题讨论】:

  • 那么..你的要求是什么?
  • 如何编辑 if 语句中的特定行
  • line 将是一个 str 对象,所以就像对待任何 str 对象一样对待。
  • 我建议你阅读这篇文章,stupidpythonideas.blogspot.com/2013/06/…
  • 我认为你没有得到我的问题....我知道我不应该使用“readlines”这就是我不使用它的原因。我的问题是将编辑后的行写回我编辑之前的行。

标签: python


【解决方案1】:

这会有所帮助

import fileinput

with fileinput.FileInput(filename, inplace=True, backup='.bak') as file:
    for line in file:
        print(line.replace(text_to_search, replacement_text), end='')

【讨论】:

    【解决方案2】:

    好的,正如@EzzatA 在问题下方的 cmets 中提到的那样,它似乎是读取原始文件并使用编辑后的数据创建新文件的最佳方式。 所以是这样的:

    original_file = open("example.txt","r")
    new_file = open("example_converted.xml","w")
    
    string_tobe_replace = "test"
    replacement_string = "test2"
    
    for line in original_file:
        if string_tobe_replace in line:
            new_line = line.replace(string_tobe_replace,replacement_string)
            new_file.write(new_line)
        else:
            new_file.write(line)
    
    
    
    original_file.close()
    new_file.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      相关资源
      最近更新 更多