尝试使用cPickle

时间:2016-03-04 14:31:16

标签: python python-2.7 pickle eoferror

我试图加载我之前用cPickle腌制的两个大词典。这是我用来创建泡菜的代码:

f_out = open("file_1.pickle", 'wb')
cPickle.dump(obj_1, f_out, protocol=-1)
f_out.close()
f_out = open("file_2.pickle", 'wb')
cPickle.dump(obj_2, f_out, protocol=-1)
f_out.close()

f_out不会在创建字典的脚本中的任何其他位置使用,并且脚本运行时没有错误。泡菜很大:obj_1为895.9 MB,obj_2为978.3 MB。文件已重命名,但不会以任何其他方式更改。以下代码用于加载pickles:

f1 = open("file_1_renamed.pickle", 'rb')
obj_1 = cPickle.load(f1)
f1.close()
f2 = open("file_2_renamed.pickle", 'rb')
obj_2 = cPickle.load(f2)
f2.close()

obj_1加载没有问题,但尝试加载obj_2会创建EOFError。我在pickle.load()时遇到了同样的错误,当我将文件作为文本打开时,也不是二进制文件。 Stack Overflow(Python Pickling Dictionary EOFError)的另一个问题表明,这可能与内存不足有关,但我并不完全相信 - 为什么内存问题会导致文件结束错误?我使用的是OS X 10.9.5和Python 2.7.8。

0 个答案:

没有答案