温馨提示:本文翻译自stackoverflow.com,查看原文请点击:python 3.x - how to make dill load python2 pickle in python3
python-3.x encoding io pickle dill

python 3.x - 如何使莳萝在python3中加载python2 pickle

发布于 2020-03-27 10:25:41

如果使用pickle进行腌制,则以下代码段有效。但是如果我有一个使用莳萝转储的对象, dill.load则由于dill.load不接受任何encoding参数而无法正常工作有什么办法可以用莳萝使这项工作吗?

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

查看更多

查看更多

提问者
muon
被浏览
186
Mike McKerns 2019-07-19 20:39

dill.dump在python 2中进行过操作,并且想dill.load在python 3中进行操作。有两个问题:

  1. 不能保证,无论您使用什么序列化,pickle都可以与除您使用的Python版本之外的其他任何版本(即3.7 vs 3.6 vs 2.7)一起使用。

  2. 正如你指出,目前dill不会对编码参数load,所以你可能在你之后做/之前的一些转换dump/ load对象(直接在物体本身)。

请注意,我将增加更多的系列化选项参数dump,并load在不久的将来(包括encoding参数)。

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