1.序列化
01 什么是序列化/反序列化
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输
发序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构
02 为什要有
1、可以保存程序的运行状态
2、数据的跨平台交互
03 怎么用
json
优点:
跨平台性强
缺点:
只能支持/对应python部分的数据类型
pickle
优点:
可以支持/对应所有python的数据类型
缺点:
只能被python识别,不能跨平台
2.json模块序列化与反序列化
序列化:内存中的数据类型------>中间格式json
dic={‘name‘:‘akko‘,‘age‘:16,‘sex‘:‘male‘}
# 1、序列化得到json_str
json_str=json.dumps(dic)
# 2、把json_str写入文件
with open(‘db.json‘,‘wt‘,encoding=‘utf-8‘) as f:
f.write(json_str)
1和2合为一步
with open(‘db.json‘,‘wt‘,encoding=‘utf-8‘) as f:
json.dump(dic,f)
反序列化:中间格式json----->内存中的数据类型
#1、从文件中读取json_str
with open(‘db.json‘,‘rt‘,encoding=‘utf-8‘) as f:
json_str=f.read()
#2、将json_str转成内存中的数据类型
dic=json.loads(json_str)
1和2可以合作一步
with open(‘db.json‘,‘rt‘,encoding=‘utf-8‘) as f:
dic=json.load(f)
验证:print(dic[‘sex‘])
注意点:json格式不能识别单引号,全都是双引号
3.pickle序列化
dic={‘a‘:1,‘b‘:2,‘c‘:3}
1 序列化
pkl=pickle.dumps(dic)
print(pkl,type(pkl))
2 写入文件
with open(‘db.pkl‘,‘wb‘) as f:
f.write(pkl)
1和2可以合作一步
with open(‘db.pkl‘,‘wb‘) as f:
pickle.dump(dic,f)
pickle反序列化
#1、从文件中读取pickle格式
with open(‘db.pkl‘,‘rb‘) as f:
pkl=f.read()
#2、将json_str转成内存中的数据类型
dic=pickle.loads(pkl)
print(dic[‘a‘])
1和2可以合作一步
with open(‘db.pkl‘,‘rb‘) as f:
dic=pickle.load(f)
#验证:print(dic[‘a‘])
json&pickle模块
原文:https://www.cnblogs.com/zhouhuayin/p/12488147.html