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

浙公网安备 33010602011771号