在Python 3.x中替换整个文本文件中的字符串?
我该怎么把一个字符串替换成另一个字符串,在一个指定的文本文件里呢?我是不是只需要用循环读取每一行,然后进行替换,同时把结果保存到一个新文件里?还是说有更好的方法?
我在想,我可以把整个文件读到内存里,但我想找一个更优雅的解决方案……
提前谢谢你们!
2 个回答
4
如果这个文件可以一次性读入内存的话,我觉得
old = myfile.read()
new = old.replace("find this", "replace by this")
output.write(new)
至少和
for line in myfile:
output.write(line.replace("find this", "replace by this"))
一样好读,而且可能会稍微快一点,但最终其实这并没有太大区别。
12
fileinput 是 Python 标准库中的一个模块,它可以让你“看起来像是在直接更新文本文件”,同时还支持其他相关的任务。
for line in fileinput.input(['thefile.txt'], inplace=True):
print(line.replace('old stuff', 'shiny new stuff'), end='')
这段代码就是你提到的特定任务所需的全部内容——它解决了所有问题(比如写入不同的文件、完成后删除旧文件并用新文件替换)。你还可以添加一个额外的参数,比如 backup='.bk'
,这样就能自动保存旧文件,比如变成 thefile.txt.bk
,还可以处理多个文件,从命令行获取要处理的文件名等等,等等——一定要看看文档,内容非常不错(而且我推荐的这个模块也很棒!)。