如何在 python3 中制作莳萝负载 python2 泡菜

how to make dill load python2 pickle in python3

如果使用 pickle 腌制,则以下代码段有效。但是如果我有一个使用 dill 转储的对象,dill.load 不起作用,因为 dill.load 不接受任何 encoding 参数。有什么方法可以使用莳萝完成这项工作吗?

with open(‘py2pickle.p’,'rb') as f
    data = pickle.load(f, encoding='latin1')

你在 python 2 中做了 dill.dump,想在 python 3 中做 dill.load。有两个问题:

  1. 没有任何保证,不管你是什么人 用于序列化 pickle 将适用于任何版本 python 与您使用的不同(即 3.7 对 3.6 对 2.7)。

  2. 如您所述,目前 dillload 上没有编码参数,因此您可能需要进行一些转换 before/after 你 dump/load 对象(直接在对象本身)。

请注意,我将在不久的将来向 dumpload 添加更多序列化选项参数(包括 encoding 参数)。

更新: dill 现在有一个编码参数,以及其他有助于从 2.x 到 3.x 的 pickle 转换的参数。