Welcome to kimi's blog

pickle序列化模块

pickle序列化模块

pickle模块存的是二进制模式(b)
    优势:能够序列化python中的所有数据
    缺陷: 只能够在python中使用 无法跨语言传输

需求:产生一个对象并保存到文件中,取出来还是一个对象

"""
需求:产生一个对象并保存到文件中 取出来还是一个对象
"""
class C1:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def func1(self):
        print('from func1')

    def func2(self):
        print('from func2')

obj = C1('kimi',18)

# 首先写入文件的需要是字符串类型(str)或者bytes类型,而obj是对象,其次json模块是将数据类型转换为json模式的字符串,取出来还是存储的类型,存对象是无法序列化的
# import json
# with open(r'a.txt','w',encoding='utf8') as f:
#     json.dump(obj,f)
# TypeError: Object of type C1 is not JSON serializable

# 用pickle模块存数据 可以满足将一个对象并保存到pickle模块文件中 取出来还是一个对象
import pickle
with open(r'a.txt','wb') as f:
    pickle.dump(obj,f)

with open(r'a.txt','rb') as f:
    data = pickle.load(f)

print(data)  # <__main__.C1 object at 0x00000247F0045BB0>
data.func1()  # from func1
data.func2()  # from func1
print(data.name)  # kimi
posted @ 2022-11-09 17:18  魔女宅急便  阅读(24)  评论(0)    收藏  举报
Title