【问题标题】:How to archive binary data如何归档二进制数据
【发布时间】:2017-06-28 04:53:39
【问题描述】:

使用zipfile 归档data 字典:

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。 要腌制data zip 文件需要取消存档:

fh = open(zfilename, 'rb')
z = zipfile.ZipFile(fh)
for each in z.namelist():
    z.extract(each, r'c:\temp')
fh.close()

如何简化流程?

【问题讨论】:

  • 通过一些快速的谷歌搜索,我发现了您可能需要的功能:preserved = pickle.dumps(data) dumps 生成一个字符串。 zipfile 有 .writestr() 用于将字符串转换为 zip。这样只有一个文件。

标签: python zip pickle archive


【解决方案1】:

请改用gzip。它会在您编写文件时对其进行压缩,因此不需要中间文件。

# (python 2) import cPickle as pickle
import 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 2021-02-02
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多