出於某種原因,我無法讓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