逐行操作文本文件还是整个字符串?

时间:2011-11-08 09:14:17

标签: python

for line in open('file.txt'):
    print(re.sub('windows', 'linux', line))

print(re.sub('windows', 'linux', open('file.txt').read()))

哪一个更好?有什么不同吗?
BTW。用regex来操纵一个巨大的字符串是个好主意吗?

2 个答案:

答案 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)

第一个更符合我的标准,但每行会进行一次文件读取操作。它可能是更高效的内存(每行只是重新分配一个缓冲区,而不是将整个文件加载到内存中),具体取决于底层。

第二个更丑陋,但效率更高。

总而言之,除非做了大量的工作,否则可能差别不大。