序列化——从其他数据类型转向一个字符串数据类型
反序列化——字符串到其他数据类型
序列——字符串
json #五星
pickle #四星
shelve #py3新增
json #通用的序列化格式
#只有很少的一部分数据类型能通过json转化成字符串
pickle #pickle序列化的内容只有python能理解,且部分反序列化依赖python代码
#所有python数据类型都能转化
shelve #序列化句柄,使用句柄直接操作,很方便
#
#######################################################
json dumps序列化方法 loads反序列化方法(内部使用元素必须双引号)
str_d = json.dumps(dic)
dic_d = json.loads(str_d)
可序列化内容:数字 字符串 列表 字典 元组(会被转化成序列)
json.dump(dic,f)
json.load(f) #对文件操作
json.dump(dic,f,ensure_ascii=False) 加上参数防止中文变bytes类型
#######################################################
pickle命令同上,序列化以后是bytes格式,可以序列化任意数据类型
dump需要用wb格式打开文件,load需要用rb格式打开
可以按顺序dump和load,json不行(用dumps和loads加文件读写)
#######################################################
shelve可以直接对文件句柄进行操作
f = shelve.open(‘file‘)
f[‘key‘] = {‘int‘:10,‘float‘:9.5}
f.close
f1 = shelve.open(‘file‘)
a = f1[‘key‘] #key不存在会报错
shelve.open(‘file‘,flag = ‘r‘) #据说是只读模式,不让写入(然而不能修改,可以写入)
shelve.open(‘file‘,writeback=True) #会记录待持久化对象的修改,但会增加内存消耗
原文:https://www.cnblogs.com/farion/p/9898849.html