迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

Python 中错误 ValueError: Unsupported Pickle Protocol: 3

作者:迹忆客 最近更新:2023/07/05 浏览次数:

每种编程语言都会遇到很多错误。 有些发生在编译时,有些发生在运行时。

本文将讨论 ValueError: unsupported pickle protocol: 3


Python 中的 Pickling 和 Unpickling

Pickling 是一种将 Python 对象(列表、字典等)转换为字符流的方法。 该字符流应该包含使用称为 Unpickling 的反向过程在另一个 Python 脚本中重新创建对象所需的所有数据。

pickle 模块在 Python 中进行 pickle 和 unpickling。

在下面的代码中,我们对一个列表进行了 pickle 和 unpickle。 我们创建了一个名称列表并使用 wb 模式打开该文件。

如果文件尚不存在,则 w 将创建一个文件,而 b 将以字节流的形式将数据(列表)写入文件中。 我们调用 dump() 方法指定要转储的列表以及以字节形式写入数据的文件名。

同样,我们首先以 rb 模式从文件中读取数据来解封数据。 使用 load() 方法,我们从文件中读取字节并将它们转换回列表对象。

示例代码:

#Python 3.x
import pickle
my_list = ['Jhon', 'Alia', 'Sam', 'Chris']
with open('my_file.txt', 'wb') as f:
    pickle.dump(my_list, f)
my_file = open ("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

输出(在 Anaconda 的 Jupyter Notebook 上运行):

python 3 上的pickle


Python 中错误 ValueError: unsupported pickle protocol: 3 原因

有时在 unpickle 的过程中,我们会遇到 ValueError: unsupported pickle protocol: 3 。这是由于在 pickle 和 unpickle 数据过程中使用了不兼容的 pickle 协议。

如果我们不指定协议,Python 3 默认引入并使用协议 3 来 pickle 和 unpickle 数据。 如果我们使用不同的协议对数据进行pickle和unpickle,我们将面临这个错误,如下面的代码所示。

Python 2 默认使用协议 0,Python 3 默认使用协议 3。因此,当我们在不同 Python 版本中 pickle 和 unpickle 数据时,没有正确指定协议版本,就会遇到这个错误。

示例代码:

Python 3:

#Python 3.x
import pickle
my_list = ['Jhon', 'Alia', 'Sam', 'Chris']
with open('my_file.txt', 'wb') as f:
    pickle.dump(my_list, f)

Python 2:

#Python 2.x
import pickle
my_file = open ("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

输出:

不支持的pickle协议错误


修复 Python 中的 ValueError: unsupported pickle protocol: 3

为了解决这个错误,我们在使用Python 3转储数据以在Python 2中加载此数据时必须指定小于3的pickle协议。因为Python 2不支持大于2的协议。

示例代码:

#Python 3.x
import pickle
my_list = ['Jhon', 'Alia', 'Sam', 'Chris']
with open('my_file.txt', 'wb') as f:
    pickle.dump(my_list, f, protocol=2)
Example Code:

#Python 2.x
import pickle
my_file = open ("my_file.txt", "rb")
data = pickle.load(my_file)
print(data)

输出:

修复不支持的pickle协议

这里,字符串前面的 u 代表 Unicode。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Python 中错误 ValueError: No JSON Object Could Be Decoded

发布时间:2023/07/06 浏览次数:123 分类:Python

我们将讨论名称错误、如何将 Python 对象编码为 JSON,以及如何将相邻字符串解码为 Python 对象。 我们还去了解一下为什么解析JSON数据失败。ValueError: No JSON Object Could Be Decoded

Python 错误 Can't Find Main Module

发布时间:2023/07/06 浏览次数:141 分类:Python

在本文中,我们将讨论 Python 中找不到“__main__”模块的错误、其原因以及如何解决该错误。解决Python中can't find '__main__' module错误

Python File Not Found 错误

发布时间:2023/07/06 浏览次数:146 分类:Python

FileNotFoundError 是一个常见错误,当 Python 无法找到要打开的文件时就会出现该错误。 本文将讨论Python中的 FileNotFoundError 及其解决方案。Python 中的文件 I/O

Python 中 Function Is Not Defined 错误

发布时间:2023/07/05 浏览次数:153 分类:Python

通过这个解释,我们将了解当 Python 程序显示类似 NameError: name '<functionName>' is not Defined 的错误时会出现什么情况,即使脚本中存在该函数。

修复 Python 中错误 TypeError: 'map' Object Is Not Subscriptable

发布时间:2023/07/05 浏览次数:183 分类:Python

本文将讨论 TypeError: 'map' object is not subscriptable,它是 TypeError 的子类。 当我们尝试执行与对象类型不兼容的操作时,我们会遇到类型错误。Python 中出现 TypeError: 'map' object is not subscriptable 错误的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便