pickle模块

发布时间 2024-01-12 20:44:28作者: 苏苏!!

pickle模块

(一)什么是pickle模块

  • pickle 模块是 Python 内置的一个序列化和反序列化的模块,它可以将 Python 对象转换为字节流,也可以将字节流转换回 Python 对象。

  • 这些操作通常被称为序列化和反序列化。

  • pickle模块只能在python中使用

(二)序列化和反序列化

(1)序列化

  • 序列化是指将 Python 对象转换为可以存储在文件、数据库或者网络传输的数据格式的过程。
  • 序列化后得到的结果通常是字节流形式的数据,这种数据可以方便地进行存储和传输。

(2)反序列化

  • 反序列化则是指将字节流形式的数据恢复为原来的 Python 对象的过程。
  • 在反序列化过程中,Python 解释器会按照一定的规则解析字节流,并根据字节流的内容创建出与之对应的 Python 对象。

pickle模块

"""pickle模块"""
import pickle


class Student(object):
    def __init__(self,name):
        self.name=name
stu=Student(name='syh')
# 序列化
sbj_b=pickle.dumps(stu)
# pickle模块序列化后是二进制数据
print(sbj_b)
# b'\x80\x04\x95,\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x07Student\x94\x93\x94)\x81\x94}\x94\x8c\x04name\x94\x8c\x03syh\x94sb.'

# 反序列化
one=pickle.loads(sbj_b)
print(one)# <__main__.Student object at 0x000001C28006BF40>
print(one.name)# syh

pickle模块保存和读取

class Student(object):
    def __init__(self,name):
        self.name=name
def save_data(path,data):
    with open(path,mode='wb')as f:
        pickle.dump(data,f)
def read_data(path):
    with open(path,mode='rb')as f:
        data=pickle.load(f)
    return data
s=Student(name='syh')
# 将实例化类都得到的类的对象保存进入
save_data(path='dream',data=s)
data=read_data(path='dream')
# 读出来的就是实例化类得到的类的对象
print(data)# <__main__.Student object at 0x00000297B9D37D90>
# 读出来的实例化得到的类的对象  可以获取到对象的属性
print(data.name)# syh