Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用python更快地读取文件中的几行?_Python_File_Readlines - Fatal编程技术网

如何使用python更快地读取文件中的几行?

如何使用python更快地读取文件中的几行?,python,file,readlines,Python,File,Readlines,现在,我使用以下python代码: file = open(filePath, "r") lines=file.readlines() file.close() 假设我的文件有几行(10000或更多),那么如果我对多个文件执行此操作,我的程序就会变慢。有没有一种方法可以在Python中加速这个过程?通过阅读各种链接,我了解到readlines将文件行存储在内存中,这就是代码变慢的原因 我也尝试过下面的代码,我得到的时间增益是17% lines=[line for line in open(fi

现在,我使用以下python代码:

file = open(filePath, "r")
lines=file.readlines()
file.close()
假设我的文件有几行(10000或更多),那么如果我对多个文件执行此操作,我的程序就会变慢。有没有一种方法可以在Python中加速这个过程?通过阅读各种链接,我了解到readlines将文件行存储在内存中,这就是代码变慢的原因

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

lines=[line for line in open(filePath,"r")]
python2.4中是否还有其他模块(我可能错过了)。 谢谢 桑提亚

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

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


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

哪些链接?我很想看到这种情况的证据。@Mikel:来自docstring:“readlines([size])->字符串列表,每个字符串都是文件中的一行。反复调用readline(),并返回一个这样读取的行列表。可选的size参数(如果给定)是返回行中总字节数的近似范围。”@DSM:我的意思是那些说
readlines
的文档速度较慢@迈克1:啊,这是一个更有意义的问题
for line in file: