Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.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_Python 2.7_Text Files - Fatal编程技术网

有没有一种真正有效(快速)的方法来读取python中的大型文本文件?

有没有一种真正有效(快速)的方法来读取python中的大型文本文件?,python,python-2.7,text-files,Python,Python 2.7,Text Files,我希望用python尽可能快地从一个大的文本文件中打开和获取数据,它几乎有62603143行,大小为550MB。因为我不想给我的电脑增加压力,所以我按照下面的方法来做 import time start = time.time() for line in open(filePath): #considering data as last element in file if data in line: do_something(data) end = time.t

我希望用python尽可能快地从一个大的文本文件中打开和获取数据,它几乎有62603143行,大小为550MB。因为我不想给我的电脑增加压力,所以我按照下面的方法来做

import time
start = time.time()
for line in open(filePath):
    #considering data as last element in file
    if data in line:
        do_something(data)
end = time.time()
print "processing time = %s" % (count, end-start)

但正如我用上述方法所做的,读取完整文件几乎需要18秒。我的电脑有Intel i3处理器和4G RAM。同样地,如果文件大小更大,则需要更多的时间,并且从用户的角度考虑,它非常大。我在论坛上读了很多意见,提到了多个堆栈溢出问题,但没有找到快速有效的方法来读取和获取大文件中的数据。Python中真的有什么方法可以在几秒钟内读取大型文本文件吗?

不,没有比Python更快的方法逐行处理文件

瓶颈在于硬件,而不是文件的读取方式。Python已经在尽其所能使用缓冲区在拆分成新行之前读取更大的文件块


我建议将您的磁盘升级到SSD。

您可以使用grep提前筛选出所需的行,然后通过python运行剩余的数据。@acushner我想这是针对linux的,我是针对windows执行的grep存在于windows上。通过在C中使用流读取器轻松安装@Martijn Pieters,耗时4-5秒。我在寻找一条蟒蛇之路。不管怎样,谢谢你…@saliltamboli:那么是不是你的“做什么”功能太慢了?你用pass来计时了吗?@saliltamboli:另外,你还有一个for循环,作为Python字节码执行,它的速度永远比不上C-JIT驱动的循环,还产生了一个Python-str对象,它比C字符串重。您可以尝试使用从集合导入deque和dequeopenfilePath,maxlen=0来完全消除循环,只需读取行、生成字符串并再次丢弃它们。我通过打印找到的数据计算了完整的文件处理时间。此函数中未使用数据处理操作。计算的过程时间仅用于迭代。