序列化
序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes
用于序列化的两个模块
json:用于字符串和python数据类型间进行转换 文件结尾.json
pickle:用于python特有的类型和python的数据类型间进行转换 文件结尾.pkl
json模块提供了四个功能: dumps,dump,loads,load
pickle模块提供了四个功能: dumps,dump,loads,load
只是把数据类型转成字符串存到内存里的意义?
json.dumps json.loads
1.把内存数据通过网络 共享给远程其他人
2.定义了不同语言之间的交互规则
1.纯文本,坏处是不能共享复杂的数据类型
2.xml,坏处是占用空间大
3.json,简单,可读性好
pickle和json用法完全一样
json VS pickle
json:
优点:跨语言,体积小
缺点:只能支持int\str\list\tuple\dict
pickle:
优点:专为python设计,支持python所有的数据类型
缺点:只能在python中使用,存储数据占用空间大
shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。
序列化:
import shelve
f = shelve.open('shelve_test') # 打开一个文件
names = ["alex", "rain", "test"]
info = {'name':'alex','age':22}
f["names"] = names # 持久化列表
f['info_dic'] = info
f.close()
反序列化:
import shelve
d = shelve.open('shelve_test') # 打开一个文件
print(d['names'])
print(d['info_dic'])
#del d['test'] #还可以删除