2 回答
TA贡献1802条经验 获得超5个赞
当然,您可以逐行编写。事实上,一般来说,文件处理在使用文件对象作为上下文管理器和行迭代器的更惯用的方式中更实用:
import shutil
with open("C:\\test.txt", "r") as long_file, \
open("C:\\test_replaced.tmp", "w") as replacement:
for line in long_file:
replacement.write(line.replace("#|#", "|"))
shutil.move("C:\\test_replaced.tmp", "C:\\test.txt")
只要您可以将临时文件写入磁盘而不会造成麻烦,这就会起作用。我没有一个好的、简洁的解决方案,使用标准库对文件进行就地更改,但这应该比迭代同一个文件两次并将整个内容读入内存要快得多,内存效率也更高。
TA贡献1836条经验 获得超5个赞
尝试使用生成器而不是将整个文件读入内存:
text = open("C:\\test.txt", "r")
text = ''.join((i for i in text)).replace("#|#", "|")
x = open("C:\\test.txt","w")
x.writelines(text)
x.close()
(i for i in text)语法允许延迟生成行,而不是将[i for i in text]所有行加载到内存
添加回答
举报
