由pickle转储的文件是否受Python版本和实现的严格限制?

时间:2018-03-27 14:55:27

标签: python pickle

当我使用pickle将对象保存到文件时,当我更新python解释器(例如从3.6.4到3.7.0r1)或更改python的实现(例如从cpython到pypy)时,文件是否会过期)?

如果有,是否有一系列兼容性允许升级平台? 或者是否有工具来转换这些转储文件以适应新平台?

2 个答案:

答案 0 :(得分:2)

不,没关系。如pickle.py中所述,唯一的问题是从3.x到2.x。最新的pickle can read所有文件格式都是用其中一个列出的版本编写的(注意1.0是最初的pickle实现):

  • 1.0
  • 1.1
  • 1.2
  • 1.3
  • 2.0
  • 3.0
  • 4.0

只要他们正确地实现几乎所有的标准库模块,在诸如IronPython或Jython之类的python实现之间进行更改都无关紧要。

答案 1 :(得分:2)

如果您只是浏览python 3的各个版本,那么您将不会遇到任何默认协议问题。但是,如果你需要python 2读取pickle文件,那么你可以在转储期间将pickle版本更改为0,可以通过python 2和python 3读取。

我建议阅读文档,因为它有更多关于这个主题:https://docs.python.org/3/library/pickle.html