在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

回答:

我想类似的事情应该做。它基本上将内容写入新文件,并用新文件替换旧文件:

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)

以上是 在Python中搜索并替换文件中的一行 的全部内容, 来源链接: utcz.com/qa/432959.html

回到顶部