ValueError:不受支持的pickle协议:3,python2 pickle无法加载python 3 pickle转储的文件?
我使用pickle在python 3上转储一个文件,然后使用pickle在python 2上加载文件,出现ValueError。
那么,python 2 pickle不能加载python 3 pickle转储的文件?
如果我想要它? 怎么做?
您应该在Python 3中使用较低的协议编号来编写pickled数据。Python 3引入了一个新的协议,编号为3 (并将其用作默认值),因此切换回可以由Python 2读取的值2。 
 检查pickle.dump的protocol参数。 您的结果代码将如下所示。 
 pickle.dump(your_object, your_file, protocol=2) 
  pickle.load没有protocol参数,因为pickle可以从文件中确定协议。 
  Pickle使用不同的protocols将数据转换为二进制stream。 
- 
在Python 2中有3种不同的协议 ( 0),默认为0。
- 
在Python 3中有5种不同的协议 ( 0),默认值是3。
 您必须在python 3中指定一个低于3的协议,以便能够在python 2中加载数据。您可以在调用pickle.dump时指定protocol参数。