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

2022-01-30 00:00:00 python file

问题描述

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

I want to loop over the contents of a text file and do a search and replace on some lines and write the result back to the file. I could first load the whole file in memory and then write it back, but that probably is not the best way to do it.

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

What is the best way to do this, within the following code?

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


解决方案

我想应该这样做.它基本上将内容写入新文件并用新文件替换旧文件:

I guess something like this should do it. It basically writes the content to a new file and replaces the old file with the new file:

from tempfile import mkstemp
from shutil import move, copymode
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))
    #Copy the file permissions from the old file to the new file
    copymode(file_path, abs_path)
    #Remove original file
    remove(file_path)
    #Move new file
    move(abs_path, file_path)

相关文章