我想循环遍历文本文件的内容,并在某些行上进行搜索和替换,并将结果写回文件。我可以先将整个文件加载到内存中然后再写回来,但这可能不是最好的方法。
在以下代码中,最好的方法是什么?
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
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)
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。