如何在给定的文本文件中用另一个字符串替换字符串。我是否只是循环读取readline()并在保存到新文件的同时运行替换?或者有更好的方法吗?
我想我可以将整个内容读入内存,但我正在寻找更优雅的解决方案......
提前致谢
答案 0 :(得分:11)
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
),以及处理多个文件,从命令行处理文件名等,等 - 阅读文档,它们非常好(我建议的模块也是如此!)。
答案 1 :(得分: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"))
它可能会快一点,但最终它可能并不重要。
答案 2 :(得分:0)