1.什么是序列化与反序列化
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输
发序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构2.为什么要有序列化与反序列化
1、可以保存程序的运行状态
2、数据的跨平台交互3.如何使用
import jsondic={ 'name':'egon','age':18,'sex':'male'}#序列化:内存中的数据类型------>中间格式json# # 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)# print(json_str,type(json_str)) # json格式不能识别单引号,全都是双引号
import json#反序列化:中间格式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'])
import pickledic={ '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)
import 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'])import json,pickles={1,2,3}# json.dumps(s)pickle.dumps(s)
json
优点: 跨平台性强 缺点: 只能支持/对应python部分的数据类型pickle 优点: 可以支持/对应所有python的数据类型 缺点: 只能被python识别,不能跨平台