为什么得到内存错误?蟒蛇

时间:2016-10-17 21:55:16

标签: python

我有一个5GB的文本文件,我试图逐行阅读。 我的文件格式为::Reviewerid< \ t> pid< \ t> date< \ t> title< \ t> body< \ n> 这是我的代码

else

但是当我尝试运行它时,我得到内存错误。我有一个8GB的RAM和1Tb的空间,为什么我得到这个错误?我尝试用块读取它,但后来我也得到了这个错误。

o = open('mproducts.txt','w')
with open('reviewsNew.txt','rb') as f1:
    for line in f1:
        line = line.strip()
        line2 = line.split('\t')
        o.write(str(line))
        o.write("\n")

1 个答案:

答案 0 :(得分:3)

<强>更新

安装64位Python解决了这个问题。

OP使用32位Python,这就是进入内存限制的原因。

阅读整篇评论我认为这可以帮到你。

  • 由于您要处理数据,因此无法以块(1024)的形式读取文件。
  • 相反,一次读取行数为N行的文件。
  • 您可以在Python中使用yield关键字和itertools来实现上述目标。

摘要 :获取N行,处理它然后写入。

示例代码:

from itertools import islice
#You can change num_of_lines
def get_lines(file_handle,num_of_lines = 10):
    while True:
        next_n_lines = list(islice(file_handle, num_of_lines))
        if not next_n_lines:
            break
        yield next_n_lines


o = open('mproducts.txt','w')

with open('reviewsNew.txt','r') as f1:
    for data_lines in get_lines(f1):
        for line in data_lines:
            line = line.strip()
            line2 = line.split('\t')
            o.write(str(line))
            o.write("\n")
o.close()