首页 > 解决方案 > 我可以腌制一个 Zip 对象吗?

问题描述

我有一个主要包含文本和 json 文件的目录,以及一个二进制文件(MXNet.Block.save_parameters神经网络的输出)。

我想压缩这个文件夹然后腌制它。假设我有一个 zip 文件对象:

from zipfile import ZipFile
import os, pickle, itertools


files = list(itertools.chain(*[
    map(lambda x: os.path.join(root, x), files)
    for root, directories, files in os.walk('model-artifacts/')
]))

zfile = ZipFile('mymode.l.zip', 'w')

for file in file_paths:
   zfile.write(file)

我真的不能腌制它:

pickle.dumps(zfile)

# TypeError: cannot serialize '_io.BufferedRandom' object

我想知道是否有办法腌制 zipfile 或任何腌制目录内容的方法。

为什么?

我不是自己做酸洗,而是使用一个Metaflow在其中腌制对象的库,所以我想找到一种方法来存储我的模型Metaflow

标签: pythondeep-learningpicklemxnetnetflix-metaflow

解决方案


简短回答:您不能腌制 Zip 对象。

说明:Zip 文件是经过压缩的文件。酸洗的目的是我们试图序列化一些(python)对象。但是,在文件压缩之后,您不再真正拥有 (python) 对象,只是一堆 0 和 1 准备解压缩。


推荐阅读