迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > 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 中错误 Address Already in Use

发布时间:2023/07/09 浏览次数:173 分类:Python

我们将通过示例介绍Python中何时出现 Address already in use 错误以及如何解决。Python 中的错误Address already in use 本文将讲述运行使用端口的程序时发生的Python堆栈错误。

Python 中错误 ValueError: Math Domain Error

发布时间:2023/07/09 浏览次数:607 分类:Python

在本篇文章中,我们的目标是探索解决 Python 中的 ValueError: math domain error 错误的不同方法。当编码方面数学(基础或高级)的使用存在固有缺陷时,Python 中通常会引发 ValueError: math domain error 错

Python 错误 Name xrange Is Not Defined

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

本篇文章将介绍如何解决 Python 中 name 'xrange' is not defined 的错误。解决Python中name 'xrange' is not defined错误 让我们尝试理解为什么会发生这个特定的错误。 让我们首先尝试复制这个问题。

Python 中错误 AttributeError: __Enter__

发布时间:2023/07/09 浏览次数:2241 分类:Python

在 Python 中,AttributeError 是在未定义 __enter__ 函数的情况下通过 with 语句使用类的对象时导致的错误。

Python 错误 Error: Invalid Command Bdist_wheel

发布时间:2023/07/09 浏览次数:847 分类:Python

在 Python 中构建 wheel 时,有时 setup.py 可能会退出并出现错误 invalid command 'bdist_wheel'。 本篇文章将讨论在 Python 中解决此问题的可能解决方案。安装wheel包来修复Python中 Error:invalid command 'bdist_

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便