我使用pickle在Python3上转储一个文件,我使用pickle在Python2上加载该文件,ValueError出现.

那么,Python2 pickle不能加载Python3 pickle转储的文件吗?

如果我想要的话?如何做?

推荐答案

在Python3中,应该使用较低的协议号编写pickle数据.Python3引入了一个数字为3的新协议(并使用它作为默认值),因此切换回Python2可以读取的值2.

判断pickle.dump中的protocol参数.生成的代码如下所示.

pickle.dump(your_object, your_file, protocol=2)

pickle.load中没有protocol参数,因为pickle可以从文件中确定协议.

Python-3.x相关问答推荐

使用Python请求从特定URL下载图像时出错

Numpy将3D数组的每个切片相乘以进行转置并对其求和

Numpy argmin()以查找最近的元组

根据另一列中的条件填写该列中的值

根据第一个字典的值序列对第二个字典进行排序

以特定方式重新排列 pandas 数据框的列

如何将值映射到具有上限和下限的新列

如何统计一个值连续出现的次数?

如何对具有多个列值的 pandas 数据框进行数据透视/数据透视表

为什么 mypy 不适用于 sqlalchemy?

在python中将字符串写入文本文件

Visual Studio Code 中的 Python 3.x 类型提示

基本 Flask 应用程序未运行(TypeError:模块中缺少必填字段type_ignores)

发送Electron邮件时的 MIMEText UTF-8 编码问题

我们如何获得 __repr__() 的默认行为?

带百分号的 Python 字符串格式

无 Python 错误/错误?

为什么变量 = 对象不像变量 = 数字那样工作

如何将文档字符串放在 Enums 上?

Django Rest 框架 ListField 和 DictField