📜  Pickle 示例 (1)

📅  最后修改于: 2023-12-03 15:33:41.462000             🧑  作者: Mango

Pickle 示例

Pickle 是 Python 标准库中的一个模块,它可以将 Python 对象序列化和反序列化成一个字节流(binary)。Pickle 可以将 Python 对象存储到文件中,并在需要时将其重新加载到内存中。Pickle 的主要用途是在进程间传递数据,以及将数据持久化到本地磁盘。

简单示例

下面是一个简单的示例,展示了如何使用 Pickle 序列化和反序列化 Python 对象:

import pickle

# Define a Python object
my_dict = {"a": 1, "b": 2, "c": 3}

# Serialize the object to a byte stream
serialized = pickle.dumps(my_dict)

# Deserialize the byte stream back into a Python object
deserialized = pickle.loads(serialized)

# Print the deserialized object
print(deserialized)  # {"a": 1, "b": 2, "c": 3}

在上面的代码中,我们首先定义了一个 Python 字典。然后我们使用 pickle.dumps() 函数将对象序列化为字节流。接着,我们使用 pickle.loads() 函数将字节流反序列化为 Python 对象。最后,我们打印反序列化对象的结果。

持久化示例

除了在内存中传递 Python 对象外,Pickle 还可以将对象持久化保存到本地磁盘中。下面是一个示例:

import pickle

# Define a Python object
my_list = [1, 2, 3, 4, 5]

# Save the object to a file
with open("my_list.pkl", "wb") as f:
    pickle.dump(my_list, f)

# Load the object back from the file
with open("my_list.pkl", "rb") as f:
    deserialized = pickle.load(f)

# Print the deserialized object
print(deserialized)  # [1, 2, 3, 4, 5]

在上面的代码中,我们首先定义了一个 Python 列表。然后我们使用 pickle.dump() 函数将对象序列化为字节流,并将字节流保存到名为 my_list.pkl 的文件中。接着,我们使用 pickle.load() 函数从文件中加载字节流,并反序列化为 Python 对象。最后,我们打印反序列化对象的结果。

注意事项

虽然使用 Pickle 序列化和反序列化 Python 对象非常方便,但是需要注意以下几点:

  1. Pickle 序列化的数据是二进制格式,如果需要人类可读的文本格式,建议使用 JSON 或 YAML。
  2. Pickle 序列化的对象必须具有可序列化(serializable)的属性,否则将会抛出异常。
  3. 不要从不可信任的源接受 Pickle 数据,因为它们可能包含恶意代码。在反序列化之前,请务必验证数据来源的可信度。

总之,Pickle 是 Python 语言非常有用的一项功能,可以让开发者在 Python 应用程序开发过程中更加方便地序列化和反序列化 Python 对象,甚至可以持久化 Python 对象到本地磁盘上。