ValueError:不支持的泡菜协议:3,python2泡菜无法加载python 3泡菜转储的文件?


Answers:


158

您应该在Python 3中使用较低的协议编号来编写腌制的数据。Python3引入了一个带有该编号的新协议3(并将其用作默认协议),因此切换回2可以由Python 2读取的值。

检查中的protocol参数pickle.dump。您生成的代码将如下所示。

pickle.dump(your_object, your_file, protocol=2)

中没有protocol参数,pickle.load因为pickle可以从文件确定协议。


54

Pickle使用不同的protocols方法将您的数据转换为二进制流。

3为了能够在python 2中加载数据,您必须在python 3中指定一个低于的协议。可以protocol在调用时指定参数pickle.dump


10
仅供以后参考,显然5在python 3.8中也引入了一个协议,该协议与早期版本不兼容。
Farzad Abdolhosseini

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.