如果您无法控制这些腌制文件的创建方式,并且 必须 在Python 2.7中加载它们,那么很
也许创建文件的人没有意识到Python 3中pickle的默认协议是“ 3”,但这是向后不兼容的。
从文档中:
当前默认协议是3;默认协议是3。为Python 3.0设计的向后不兼容的协议。
如果它们是一组固定的文件,那么一种解决方法可能是编写一个脚本,该脚本以迭代方式在Python 3.0中加载协议3腌制的文件,然后将其protocol=2
用作一次性修复程序重新编写。然后,您将能够在Python 2.7中阅读它们。如果要创建一些将来的文件需要处理的文件,还请确保修改写入这些文件的原始代码。
像pickle.dump(pickle.load(sys.stdin),sys.stdout,2)一样简单