出于某种原因,我无法让cPickle.load在ZipFile.open()返回的文件类型对象上工作。 如果我对由ZipFile.open()返回的文件类型对象调用read(),我可以使用cPickle.loads。从zip文件加载pickle文件
例....
import zipfile
import cPickle
# the data we want to store
some_data = {1: 'one', 2: 'two', 3: 'three'}
#
# create a zipped pickle file
#
zf = zipfile.ZipFile('zipped_pickle.zip', 'w', zipfile.ZIP_DEFLATED)
zf.writestr('data.pkl', cPickle.dumps(some_data))
zf.close()
#
# cPickle.loads works
#
zf = zipfile.ZipFile('zipped_pickle.zip', 'r')
sd1 = cPickle.loads(zf.open('data.pkl').read())
zf.close()
#
# cPickle.load doesn't work
#
zf = zipfile.ZipFile('zipped_pickle.zip', 'r')
sd2 = cPickle.load(zf.open('data.pkl'))
zf.close()
注:我不想压缩只是咸菜文件,但其他类型的多个文件。这只是一个例子。
你试过'import picklefork'吗? :P – FrustratedWithFormsDesigner 2010-06-09 14:27:05
试着告诉我们在这种情况下什么“不起作用”我们没有水晶球。 – 2010-06-09 14:37:02
@John,复制和过去他给出的代码有多难?它在最后一个片段中得到一个'EOFError'。 – 2010-06-09 14:39:15