一、什么是序列化/反序列化
序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输
反序列化就是将硬盘或者网络中传来的一种数据格式转换成内存中的数据结构
二、为什么要有
1、可以保持程序的运行状态
2、数据跨平台交互
三、怎么用
json:
优点:
跨平台性强
缺点:
只能支持/对应python部分的数据类型
pickle
优点:
可以支持/对应所有python的数据类型
缺点:
只能被python识别,不能跨平台
注:json格式不能识别单引号,全都是双引号
1、json序列化和反序列化
#1、序列化得到json_str
import json
#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)
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)
2、pickle序列化和反序列化
import pickle #序列化 #pk1=pickle.dumps(dic) #写入文件 #with open('db.pk1','wb')as f: # f.write(pk1) #1、2合成一步 with open('db.pk1','wb')as f: pickle.dump(dic,f)
import pickle #反序列化 #1、从文件中读取pickle格式 #with open('db.pk1,'rb') as f: # pk1=f.read() #2、将json_str转成内存中的数据类型 #dic=pickle.loads(pk1) #1、2合成1步: with open('db.pk1','rb')as f: dic=pickle.load(f)