有没有一种真正有效(快速)的方法来读取python中的大型文本文件?
我希望用python尽可能快地从一个大的文本文件中打开和获取数据,它几乎有62603143行,大小为550MB。因为我不想给我的电脑增加压力,所以我按照下面的方法来做有没有一种真正有效(快速)的方法来读取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
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来完全消除循环,只需读取行、生成字符串并再次丢弃它们。我通过打印找到的数据计算了完整的文件处理时间。此函数中未使用数据处理操作。计算的过程时间仅用于迭代。