3

截至目前,我使用以下 python 代码:

file = open(filePath, "r")
lines=file.readlines()
file.close()

假设我的文件有几行(10,000 或更多),那么如果我对多个文件执行此操作,我的程序就会变慢。有没有办法在 Python 中加快速度?阅读各种链接我了解 readlines 将文件行存储在内存中,这就是代码变慢的原因。

我也试过下面的代码,我得到的时间增益是 17%。

lines=[line for line in open(filePath,"r")]

python2.4 中是否还有其他模块(我可能错过了)。谢谢, 桑迪亚

4

1 回答 1

6
for line in file:

这为您提供了一个迭代器,它一次读取文件对象一行,然后从内存中丢弃前一行。

文件对象是它自己的迭代器,例如 iter(f) 返回 f(除非 f 被关闭)。当文件用作迭代器时,通常在 for 循环中(例如,for line in f: print line),next() 方法会被重复调用。此方法返回下一个输入行,或在 EOF 被命中时引发 StopIteration。为了使 for 循环成为循环文件行的最有效方式(一种非常常见的操作),next() 方法使用隐藏的预读缓冲区。作为使用预读缓冲区的结果,将 next() 与其他文件方法(如 readline())结合起来无法正常工作。但是,使用 seek() 将文件重新定位到绝对位置将刷新预读缓冲区。2.3 版中的新功能。

简短回答:不要将行分配给变量,只需在循环内执行您需要的任何操作。

于 2011-02-04T06:11:22.730 回答