序列化
JSON
json是内置函数,用于多种语言交互,编程语言通用数据
import json # 导入json模块
dic = {':2}
dumps: 将字典转换成字符串
s = json.dumps(dic) # 将字典对象转换成字符串 print(type(s))
loads: 将字符串转换成字典
di = '{"1":2}' d = json.loads(di) # 将字符串转换成字典 print(d) print(type(d))
dump:将字典转换字符串写入到文件中
json.dump({'1':4},open('a','w',encoding='utf-8'))
load:将文件中的字符串转换成字典
d = json.load(open('a','r',encoding='utf-8')) print(d)
总结:
json.load() #参数文件句柄(r), 将文件中字符串转换成字典
json.dump() #对象(字典),文件句柄(w) 将字典转换字符串写入到文件中
json.dumps() #对象(字典) 将字典转换成字符串
json.loads() #字符串(字典) 将字符串转换成字典
pickle
pickle模块是python中特有的模块,只支持Python使用
dumps: 将对象转换成类似二进制的东西
import pickle # 导入模块
print(pickle.dumps({'1':4})) #将对象转换成类似二进制的东西
dump: 将字典转换成字节写入到文件中
pickle.dump({'2':4},open('b','wb'))
loads: 将一个堆类似于二进制的东西转换成字典
print(pickle.loads(b'\x80\x03}q\x00X\x01\x00\x00\x001q\x01K\x04s.'))
load: 将文件中的字节转换成字典
d = pickle.load(open('b','rb'))
# 总结:
# josn,pickle 对比
# loads json里的将字符串转换成字典 pickle 将字节转换成字典
# dumps json里的将字典转换成字符串 pickle 将字典转换成字节
# load json里的将文件中的字符串转换成字典 pickle 将文件中的字节转换成字典
# dump json里的将字典转换字符串写入到文件中, pickle 将字典转换成字节写入到文件中
shelve
# 文件+字典操作
import shelve # 模块导入
f = shelve.open('c',writeback=True) #创建文件 # writeback = True 回写
可以使用writeback强制写入
然后我们可以对f进行字典方法操作,但是keys,values无法使用