我遇到了内存错误问题。
pifile = 'pibillion.txt'
with open(pifile, "r+") as a:
data = str(a.readline())
c = Counter(data)
我的所有代码都是读取一个非常大的pi数字行。 txt文件只有953 MB。我有8 GB RAM。我猜测错误是它遇到了字符串大小限制,但我不确定。其余代码以2为增量插入换行符。任何帮助将非常感谢如何继续这一点。
我得到的确切错误是:
data = str(a.readline())
MemoryError
答案 0 :(得分:2)
Python本身并不是懒惰的(比如haskell),所以读取一个字符串会把它全部放在内存中。添加一些字符串转换,你就会内存不足。相反,迭代地执行此操作,如下所示。
请注意,我使用了一个新文件,因为文件通常是连续存储的,因此插入非常昂贵。
with open('pibillion.txt', 'r') as old_file, open('pibillion_.txt', 'w') as new_file:
while True:
c = old_file.read(2)
if not c:
break
new_file.write(c + '\n')