for line in open('file.txt'):
print(re.sub('windows', 'linux', line))
或
print(re.sub('windows', 'linux', open('file.txt').read()))
哪一个更好?有什么不同吗?
BTW。用regex
来操纵一个巨大的字符串是个好主意吗?
答案 0 :(得分:2)
正如Polynomial所说,第二个将整个文件读入RAM,这可能会或可能不会更好。
但还有另一种解决方案:
with open('file.txt') as file:
for line in file:
print(re.sub('windows', 'linux', line))
这可确保文件在不再需要文件后立即关闭。
Similiarly,
with open('file.txt') as file:
print(re.sub('windows', 'linux', file.read()))
也可以使用。
答案 1 :(得分:1)
第一个更符合我的标准,但每行会进行一次文件读取操作。它可能是更高效的内存(每行只是重新分配一个缓冲区,而不是将整个文件加载到内存中),具体取决于底层。
第二个更丑陋,但效率更高。
总而言之,除非做了大量的工作,否则可能差别不大。