我使用pickle在python 3上转储文件,并使用pickle在python 2上加载文件,出现ValueError。
那么,python 2 pickle 无法加载 python 3 pickle 转储的文件?
如果我想要?怎么做?
我使用pickle在python 3上转储文件,并使用pickle在python 2上加载文件,出现ValueError。
那么,python 2 pickle 无法加载 python 3 pickle 转储的文件?
如果我想要?怎么做?
您应该在 Python 3 中使用较低的协议编号编写腌制数据。Python 3 引入了一个带有该编号的新协议3
(并将其用作默认值),因此切换回2
Python 2 可以读取的值。
检查中的protocol
参数pickle.dump
。您生成的代码将如下所示。
pickle.dump(your_object, your_file, protocol=2)
因为可以从文件中确定协议,所以没有protocol
参数。pickle.load
pickle
Pickle 使用不同protocols
的方法将您的数据转换为二进制流。
您必须在 python 3 中指定低于的协议3
才能在 python 2 中加载数据。您可以protocol
在调用时指定参数pickle.dump
。