序列化和反序列化
概念
序列化:将内存中的变量序列化后存储到硬盘或者通过网络传输到不通平台,类似于encoding过程。python中是将各种数据类型转换为字符串
反序列化:将硬盘中的数据反序列化成相应的数据类型并加载到内存中。将字符串转换为python中的数据类型
序列化的作用
1. 将内存中数据序列化后存储到硬盘
2. 将内存中数据序列化后通过网络传输给不同平台(java)
3. 往往一个应用需要不同的语言程序来协作完成,因为不同语言的数据类型不同,需要一个中间数据类型来进行不同平台之间的传输(json)
json 模块(ujson模块性能较好)
1. json模块并不能适用于python所有数据类型的转换(如:集合)
2. json适用于不同开发语言之间的数据传递
import json
res1=json.dumps([1,'xioaming',"中国",True,False])
print(res1)
res2=json.loads(res1)
print(res2)
----------------
将序列化后的数据写入硬盘,然后反序列化出硬盘中文件的内容
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write(json.dumps([1,'xiaoming',"中国",True,False]))
with open('a.txt',mode='rt',encoding='utf-8') as f1:
res3=json.loads(f1.read())
print(res3)
with open('a.txt',mode='w') as f3:
json.dump([1,'xioaming12',"中国",True,False],f3)
with open('a.txt',mode='r') as f3:
print(json.load(f3))
pickle模块
pickle和json很像,只不过pickle只用于python的序列化和反序列化。
序列化时会将python对象转换为bytes类型的数据
反序列化会将bytes数据转换为相应的python对象
xml和shelve模块
比较老旧,和json的作用差不多,json操作起来更简单
configparser
import configparser
res=configparser.ConfigParser()
res.read('a.ini',encoding='utf-8')
print(res.sections())
print(res.options("mysql"))
print(res.items("mysql"))
print(res.get('mysql',"host"))