我可以让pickle.dump暴露出类似文件的对象吗?

时间:2013-03-28 19:26:50

标签: python pickle

我想挑选用snappy-python压缩的对象。因为这些对象很大,我想使用流媒体 - 即pickle.dump,而不是pickle.dumps。

不幸的是,snappy和pickle API似乎并不特别兼容:

snappy.stream_compress(src, dst, blocksize=65536)
pickle.dump(obj, file, protocol=None)

有关snappy.stream_compress(pickle.dump_magic(obj), dst)类似pickle.dump(obj, dst)今天所做的工作需要什么样的魔力的想法?

1 个答案:

答案 0 :(得分:1)

最简单的方法是pickle.dump到文件,然后snappy.stream_compress文件。

def snappy_pickle_dump(obj, f):
    tmpf = ...
    with open(tmpf, 'wb') as F:
        pickle.dump(obj, F)
    with open(f, 'wb') as OUT:
        with open(tmpf, 'rb') as IN:
            snappy.stream_compress(IN, OUT)
    os.remove(tmpf)

如果必须避免存储整个未压缩转储,则可以将一个线程pickle.dump对象放入StringIO对象,另一个线程snappy.stream_compress