使用 Python 读取 Pickle 文件
在 Python 中,pickling 是指将 Python 对象(列表、字典等)转换为二进制流,而 unpickling 是指将二进制数据流转换为 Python 对象。
转换后的二进制数据流包含重建原始对象的所有信息。不幸的是,pickle 文件通常被认为是不安全的。
Pickle 文件用于保存程序的状态(变量、对象及其状态等的值),将 Python 对象以序列化二进制字符串的形式存储到数据库中,通过 TCP 或传输控制协议发送数据等。
在训练机器学习模型时,pickle 文件用于存储模型权重,有时,加载的训练数据或格式化的训练数据以 pickle 文件的形式存储回磁盘。
在本文中,我们将了解如何使用 Python 读取这些 pickle 文件。我们将讨论两种这样的方式。
在 Python 中使用 pickle
模块读取 Pickle 文件
Python 有一个内置模块 pickle
,其中包含使用 Python 序列化和反序列化数据的实用程序。这些数据可以存储在 pickle 文件中。
我们可以使用 pickle
模块使用 Python 读取 pickle 文件。请参阅以下 Python 代码。
objects = []
file_name = "/path/to/the/pickle/file"
with (open(file_name, "rb")) as f:
while True:
try:
objects.append(pickle.load(f))
except EOFError:
break
在上面的代码中,objects
变量将保存 pickle 文件的所有数据。
代码循环遍历文件以读取它,直到发现 EOFError
异常。同样是数据存储在 pickle 文件内的对象中。
pickle
模块中的 load()
函数只会读取单个对象。读取一个对象后,文件指针指向 pickle 文件中下一个对象的开头。
请参阅此处链接的文档以了解更多信息。
在 Python 中使用 pandas
模块读取 Pickle 文件
我们可以使用 pandas
库来读取 Python 中的 pickle 文件。
pandas
模块有一个 read_pickle()
方法,可用于读取 pickle 文件。
此方法接受一个 filepath_or_buffer
参数:文件路径、URL 或将从中加载 pickle 文件的缓冲区。此函数将返回文件的未腌制对象。
现在让我们看看如何实际使用这种方法。请参阅以下 Python 代码。
import pandas as pd
file_name = "/path/to/the/pickle/file"
objects = pd.read_pickle(file_name)
要了解有关
read_pickle()
方法的更多信息,请参阅此处官方文档。