【发布时间】:2016-10-17 21:55:15
【问题描述】:
我有一个 5gb 的文本文件,我正在尝试逐行读取它。 我的文件格式为:Revieweridpiddatetitlebody 这是我的代码
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")
但是当我尝试运行它时出现内存错误。我有 8gb 内存和 1Tb 空间,那为什么会出现这个错误?我试图分块阅读它,但我也得到了那个错误。
MemoryError
【问题讨论】:
-
该文件中最长的行有多长?
-
@FranciscoCouzo 我不知道。但是当我尝试在 EmEditor 中打开该文件时,会弹出一个窗口,提示“它包含一些非常大的行。你想以二进制格式打开它吗?”通过选择二进制选项,它可以正确显示文件。
-
o中的o.write()是什么?如果您将读取的所有内容都保存在内存中,那么您遇到内存错误我并不感到惊讶。 -
Mode 'rb' 以二进制模式打开文件。试试'r+'。见docs.python.org/2/tutorial/inputoutput.html
-
使用
for i, line in enumerate(f1):并在每次迭代中打印i。您看到的最后一个打印应该是最后一行。
标签: python