Python 如何归档二进制数据

Python 如何归档二进制数据,python,zip,pickle,archive,Python,Zip,Pickle,Archive,使用zipfile归档数据字典: import os, sys, cPickle, zipfile data = {1: 'one'} pfile = r'c:\temp\myPickle.p' cPickle.dump( data, open( pfile, "wb" )) zfilename = r'c:\temp\myArchive.zip' zfile = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED) zfile.writ

使用zipfile归档数据字典:

import os, sys, cPickle, zipfile 
data = {1: 'one'}
pfile = r'c:\temp\myPickle.p'
cPickle.dump( data, open( pfile, "wb" ))

zfilename = r'c:\temp\myArchive.zip'
zfile = zipfile.ZipFile(zfilename, "w", zipfile.ZIP_DEFLATED)
zfile.write(pfile, os.path.basename(pfile))
zfile.close()
该方法在本地驱动器上生成两个文件:一个是pickle,另一个是zip。 要获取pickle数据,需要取消归档zip文件:

fh = open(zfilename, 'rb')
z = zipfile.ZipFile(fh)
for each in z.namelist():
    z.extract(each, r'c:\temp')
fh.close()
如何简化流程?

改用gzip。它在您写入文件时压缩文件,因此不需要中间文件

import cPickle as pickle
import gzip

data = {1: 'one'}

pfile = r'test.pkl.gz'
pickle.dump(data, gzip.open(pfile, "w"), pickle.HIGHEST_PROTOCOL)
print pickle.load(gzip.open(pfile))

,通过快速搜索,我找到了您可能需要的函数:preserved=pickle.dumpsdata dumps生成一个字符串。zipfile具有用于将字符串转换为zip的.writest。这样只有一个文件。