尝试加载5GB文本文件时的Python MemoryError

时间:2014-09-25 06:46:31

标签: python file out-of-memory text-files large-data

我想以5GB文件读取以文本格式存储的数据。当我尝试使用此代码读取文件内容时:

file = open('../data/entries_en.txt', 'r')
data = file.readlines()

发生错误:     data = file.readlines()     的MemoryError 当我想运行程序时,我的笔记本电脑有8GB内存,至少4GB是空的。但是当我监视系统性能时,当python使用大约1.5GB的内存时,就会发生这种错误 我使用的是python 2.7,但是如果它很重要请告诉我2.x和3.x的解决方案 我该怎么做才能阅读这个文件?

2 个答案:

答案 0 :(得分:3)

处理大文件的最佳方式是 -

with open('../file.txt', 'r') as f:
    for line in f:
        # do stuff

readlines()会出错,因为您尝试将过大的文件直接加载到内存中。完成处理后,上面的代码会自动关闭你的文件。

答案 1 :(得分:2)

如果要处理文件中的行,则应使用:

for line in file:
    # do something with the line

它将逐行读取文件,而不是立即将其全部读取到RAM中。