python学习笔记(21) 常用模块--序列化模块

序列化——从其他数据类型转向一个字符串数据类型

反序列化——字符串到其他数据类型

序列——字符串

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)  #会记录待持久化对象的修改,但会增加内存消耗

猜你喜欢

转载自www.cnblogs.com/farion/p/9898849.html