Python 3.x 如何在蟒蛇3中制作莳萝装蟒蛇2泡菜

Python 3.x 如何在蟒蛇3中制作莳萝装蟒蛇2泡菜,python-3.x,encoding,io,pickle,dill,Python 3.x,Encoding,Io,Pickle,Dill,如果使用picklepickle进行pickle,则以下代码段有效。但是如果我使用dill转储对象,dill.load不起作用,因为dill.load不接受任何编码参数。有没有办法用莳萝来完成这项工作 with open(‘py2pickle.p’,'rb') as f data = pickle.load(f, encoding='latin1') 您在Python2中执行了dill.dump,并希望在Python3中执行dill.load。有两个问题: 不管你是什么,都不能保证 用

如果使用pickle
pickle
进行pickle,则以下代码段有效。但是如果我使用dill转储对象,
dill.load
不起作用,因为
dill.load
不接受任何
编码
参数。有没有办法用莳萝来完成这项工作

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

您在Python2中执行了
dill.dump
,并希望在Python3中执行
dill.load
。有两个问题:

  • 不管你是什么,都不能保证 用于pickle将与的任何版本一起工作的序列化 python,而不是您使用的python(即3.7 vs 3.6 vs 2.7)

  • 正如您所指出的,当前
    dill
    load
    上没有编码参数,因此您可能必须在
    dump
    /
    load
    对象之前/之后进行一些转换(直接在对象本身上)

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


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

    没有。我在python2中做了
    dill.dump
    ,并想在python3中加载它。我不知道你是dill开发/维护人员。谢谢你的伟大工作!!我刚刚添加了
    encoding
    参数和其他最近的Python3.x参数,用于从2.x读取pickle。