python中pickle模块用于序列化和反序列化,支持的类型包括:
- None,True,False
- python内置类型:int,float,复数,strubg,byte,bytearray,tuple,list,dict
- 模块顶层的函数、类和类实例(可序列化)
关于更多的说明可以参考链接
示例代码如下:
import pickle as pkl
def upkl(path,obj):
'''序列化'''
file = open(path, 'wb')
pkl.dump(obj, file)
file.close()
def unupkl(path):
'''反序列化'''
file = open(path, 'rb')
result = pkl.load(file)
file.close()
return result
path='./data/pkl.pkl'
print('内置类型的序列化')
test_str="test string for pkl"
upkl(path,test_str)#序列化
result=unupkl(path)#反序列化
print(result)
print('---------------------------------')
print('类的序列化和反序列化')
class Student:
'''定义一个Student类'''
def __init__(self,name,sex,age,addr):
self.name=name
self.sex=sex
self.age=age
self.addr=addr
def __str__(self):
return 'name=%s,sex=%s,age=%s,addr=%s'%(self.name,self.sex,self.age,self.addr)
stu=Student('name',1,100,'shenzhen')
upkl(path,stu)#序列化
result=unupkl(path)#反序列化
print(result)
print('---------------------------------')