我使用pickle在Python3上转储一个文件,我使用pickle在Python2上加载该文件,ValueError出现.
那么,Python2 pickle不能加载Python3 pickle转储的文件吗?
如果我想要的话?如何做?
我使用pickle在Python3上转储一个文件,我使用pickle在Python2上加载该文件,ValueError出现.
那么,Python2 pickle不能加载Python3 pickle转储的文件吗?
如果我想要的话?如何做?
在Python3中,应该使用较低的协议号编写pickle数据.Python3引入了一个数字为3
的新协议(并使用它作为默认值),因此切换回Python2可以读取的值2
.
判断pickle.dump
中的protocol
参数.生成的代码如下所示.
pickle.dump(your_object, your_file, protocol=2)
pickle.load
中没有protocol
参数,因为pickle
可以从文件中确定协议.