python学习笔记:python版本和pickle序列化问题

pickle 可用于python序列化和反序列化
现在有5种不同的协议进行序列化

Protocol version 0 is the original “human-readable” protocol and is backwards compatible with earlier versions of Python.

Protocol version 1 is an old binary format which is also compatible with earlier versions of Python.

Protocol version 2 was introduced in Python 2.3. It provides much more efficient pickling of new-style classes. Refer to PEP 307 for information about improvements brought by protocol 2.

Protocol version 3 was added in Python 3.0. It has explicit support for bytes objects and cannot be unpickled by Python 2.x. This is the default protocol, and the recommended protocol when compatibility with other Python 3 versions is required.

Protocol version 4 was added in Python 3.4. It adds support for very large objects, pickling more kinds of objects, and some data format optimizations. Refer to PEP 3154 for information about improvements brought by protocol 4.

当我们在使用pickle.dump进行序列化的时候,如果不指定Protocol ,python2会默认使用2,python3会默认使用3
这样当使用一个版本进行序列化的时候,在想使用另一个版本进行加载就会出现错误,例如我使用python2来反序列化python3产生的文件,出现了这样的错误

ValueError: unsupported pickle protocol: 3

解决方法(使用python3反序列化 在设置python2可使用的Protocol参数进行序列化)

import pickle
testpkl = pickle.loads(open("./test.pkl", "rb").read())
pickle.dump(testpkl, open("testpkl_py2.pkl","wb"), protocol=2)

参考:
https://blog.csdn.net/zziahgf/article/details/80253125
https://docs.python.org/3/library/pickle.html#pickle.dump

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您可以使用以下方法来下载和安装这些 Python 模块: 1. os 模块:os 模块是 Python 的内置模块,无需额外下载安装。您可以直接在您的 Python 脚本中导入并使用它。 2. time 模块:time 模块也是 Python 的内置模块,无需额外下载安装。您可以直接在您的 Python 脚本中导入并使用它。 3. pickle 模块:pickle 模块也是 Python 的内置模块,无需额外下载安装。您可以直接在您的 Python 脚本中导入并使用它。 4. selenium 模块:selenium 是一个用于自动化浏览器操作的 Python 模块。您可以使用以下步骤来下载和安装 selenium 模块: - 使用 pip 安装 selenium:在命令行中运行以下命令来安装 selenium 模块: ``` pip install selenium ``` - 下载并安装浏览器驱动程序:selenium 需要与特定的浏览器驱动程序进行配合使用。您需要根据您使用的浏览器类型和版本,下载相应的浏览器驱动程序,并将其添加到系统路径中。 例如,如果您使用的是 Chrome 浏览器,可以从以下链接下载 Chrome 驱动程序:https://sites.google.com/a/chromium.org/chromedriver/downloads 下载完成后,将驱动程序解压缩,并将可执行文件移动到系统的 PATH 路径下,或者在代码中指定驱动程序的路径。 - 导入并使用 selenium 模块:在您的 Python 脚本中导入 selenium 模块,并使用它来进行浏览器自动化操作。 希望这些信息能对您有所帮助!如果您有任何其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值