【Python】基础部分 -- 常用模块 -- JSON / PICKLE / shelve 序列化
JSON / PICKLE / shelve 序列化
1) 序列化的优势
内存数据序列化的作用:
1.远程网络传输
2.不用语言之间的交互规则
2) 序列化与一般数据的区别
1.纯文本 坏处:不能共享复杂的数据类型
2.xml, 坏处:占空间大
3.json 优势:占空间小,可读性强
3) json 与 pickle的区别
JSON把内存里的数据类型转变成字符串
import json
data = '016546541'
file = 'text'
json.dump(data, open(file,
'w')) # json数据存入磁盘
lo = json.load(open(file, 'r')) # 从磁盘读处json数据
json.dumps(data) #
转换数据形式,不存入磁盘
lo =
json.loads(data) # 从内存读出json数据
print(lo)
PICKLE把内存里的数据类型转变成bytes,
import pickle
data2 = 'print(\'hha\')'
pk = open('date.pkl', 'wb')
pickle.dump(data2, pk)
pk.close()
pkl = open('date.pkl', 'rb')
print(pickle.load(open('date.pkl','rb')))
JSON 支持序列化类型:str, int, tuple, list, dict,支持跨平台,网络用
PICKLE支持类型:Python里所有数据类型,包括函数,但不支持跨平台,单机用
4) shelve 连续序列化的pickle
import shelve
f = shelve.open('shelve_test') # f相当于一个字典
name = 'aasfa'
info = 'inforamtion'
f['names'] = name # 持久化列表
f['info_dic'] = info
# 修改
f['names'] = 'reset' # 不支持单独修改【‘names’】里的元素
# 删除
del f['names']
f.close()
# 查询
f.keys()
f.items()
f.get('names')
f.get('info_dic')