Python3.x中整个文本文件的字符串替换?

Python3.x中整个文本文件的字符串替换?,python,string,python-3.x,replace,Python,String,Python 3.x,Replace,如何在给定的文本文件中用另一个字符串替换字符串。我是否只是在保存到新文件时循环readline()并运行替换?还是有更好的办法 我想我可以把整件事记在记忆里,但我正在寻找一个更优雅的解决方案 提前感谢请参阅上的最后一个列表,如果可以立即将文件读入内存,我会这么说 old = myfile.read() new = old.replace("find this", "replace by this") output.write(new) 至少可读性与 for line in myfile:

如何在给定的文本文件中用另一个字符串替换字符串。我是否只是在保存到新文件时循环readline()并运行替换?还是有更好的办法

我想我可以把整件事记在记忆里,但我正在寻找一个更优雅的解决方案


提前感谢

请参阅

上的最后一个列表,如果可以立即将文件读入内存,我会这么说

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"))
它可能会快一点,但最终可能并不重要。

是Python标准库中的模块,它支持“文本文件的就地更新”以及各种其他相关任务

for line in fileinput.input(['thefile.txt'], inplace=True):
    print(line.replace('old stuff', 'shiny new stuff'), end='')

这段代码就是您提到的特定任务所需的全部内容——它处理所有问题(写入不同的文件,完成后删除旧文件,并用新文件替换)。您还可以添加另一个参数,如
backup='.bk'
,以自动将旧文件保存为(在本例中)
thefile.txt.bk
,以及处理多个文件,从命令行获取要处理的文件名,等等--请阅读文档,它们非常好(我建议的模块也是如此!).

您不想在线路中循环有什么特殊原因吗?这可能是最好的解决办法。我不知道。。。我只是想知道有没有更好的办法。而不是创建新文件并删除旧文件。通过创建新文件,您无需将整个文件保存在内存中。。。如果您正在执行re.sub,您应该确保首先使用re.compile(然后使用返回实例的sub方法),避免使用“print”,如果您不想在每次之后使用“print”添加空行和CTRL-M,则使用“sys.stdout.write”line@Badisi您可以通过设置
print
的参数
end
来实现这一点,默认情况下设置为
\n
,为空字符串。即:
打印(行,结束=“”)
。看见