"Python Programming" 014 – Python Pickle: Efficient object serialization and deserialization tool

Introduction to Python Pickle and its functions

Python Pickle is a powerful module for serializing and deserializing Python objects. It converts complex data structures into byte streams that can be stored in files or transmitted over the network. There is no need to install additional libraries, Python Pickle is already built into Python, providing developers with convenient and flexible data processing tools.

Sample code for serializing objects

Here is a sample code showing how to serialize an object using Python Pickle:

import pickle

# 定义要序列化的对象
data = {
    "name": "John",
    "age": 30,
    "city": "New York"
}

# 打开文件,以二进制写入模式
with open("data.pkl", "wb") as file:
    # 序列化对象并写入文件
    pickle.dump(data, file)

In this example, we define a dictionary object named data and use the pickle.dump() function to serialize it into a dictionary object named a>data.pkl in the file.

Sample code for deserializing objects

Here is a sample code showing how to use Python Pickle to deserialize an object:

import pickle

# 打开文件,以二进制读取模式
with open("data.pkl", "rb") as file:
    # 反序列化并加载数据到变量
    data = pickle.load(file)

# 打印反序列化后的数据
print(data)

In this example, we use the pickle.load() function to read the serialized data from a file named data.pkl and deserialize it as object. Finally, we print the deserialized data.

Serialization and deserialization of custom objects

Python Pickle also supports serialization and deserialization of custom objects. In order to implement the serialization and deserialization of custom objects, we need to implement the __getstate__() and __setstate__() methods in the object's class. Here is a sample code:

import pickle

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age
    
    def __getstate__(self):
        return {
            "name": self.name,
            "age": self.age
        }

# 创建Person对象
person = Person("John", 30)

# 序列化对象
serialized_data = pickle.dumps(person)

# 反序列化对象
deserialized_person = pickle.loads(serialized_data)

# 打印反序列化后的对象属性
print(deserialized_person.name)
print(deserialized_person.age)

In this example, we define a custom class named Person and implement the __getstate__() method to specify the object state. We create an Person object and serialize it to a byte stream using pickle.dumps() and then use pickle.loads() to serialize the byte stream Deserialize to object. Finally, we print the deserialized object properties.

Summarize

Python Pickle is an efficient object serialization and deserialization tool. It simplifies the storage and transmission of complex data structures, providing developers with convenience and flexibility. Whether you are dealing with basic data types or custom objects, Python Pickle can handle it easily and is one of the indispensable tools for Python programmers. Through serialization and deserialization, we can effectively save and restore the state of objects and achieve data persistence and transmission.

Guess you like

Origin blog.csdn.net/zclmoon/article/details/132177424