如何使莳萝在python3中加载python2 pickle

时间:2019-07-02 19:35:27

标签: python-3.x encoding io pickle dill

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

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

1 个答案:

答案 0 :(得分:1)

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

  1. 无论您是谁,都无法保证 用于序列化,泡菜可与任何版本的 python,而不是您使用的python(即3.7 vs 3.6 vs 2.7)。

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

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

更新dill现在具有一个编码参数,以及其他参数来帮助将酱菜从2.x转换为3.x。