开发者社区> 问答> 正文

在Python中搜索并替换文件中的一行

我想循环遍历文本文件的内容,并在某些行上进行搜索和替换,并将结果写回文件。我可以先将整个文件加载到内存中然后再写回来,但这可能不是最好的方法。

在以下代码中,最好的方法是什么?

f = open(file) for line in f: if line.contains('foo'): newline = line.replace('foo', 'bar') # how to write this newline back to the file

展开
收起
游客6qcs5bpxssri2 2019-09-05 23:17:39 813 0
1 条回答
写回答
取消 提交回答
  • 应该这样做。它基本上将内容写入新文件并用新文件替换旧文件:

    from tempfile import mkstemp

    from shutil import move

    from os import fdopen, remove

    def replace(file_path, pattern, subst):

    #Create temp file
    
    fh, abs_path = mkstemp()
    
    with fdopen(fh,'w') as new_file:
    
        with open(file_path) as old_file:
    
            for line in old_file:
    
                new_file.write(line.replace(pattern, 
    

    subst))

    #Remove original file
    
    remove(file_path)
    
    #Move new file
    
    move(abs_path, file_path)
    
    2019-09-05 23:18:12
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载