python-序列化与反序列化(loads、load、dumps、dump)
发布时间:2020-12-20 10:35:45 所属栏目:Python 来源:网络整理
导读:序列化模块 # 序列化方法 # 格式转换 # 把python中的数据转换成str---序列化 # 可以str转换成python的数据---反序列化 json模块 # json所有的语言都通用,它能序列化的数据是有限的:字典列表和元组 import json # json.dumps()与json.loads()是一对 # json.
json模块 # json所有的语言都通用,它能序列化的数据是有限的:字典列表和元组 # #json.dump()#理解为两个动作,一个动作是将”obj“转换为JSON格式的字符串,还有一个动作是将字符串写入到文件中,也就是说文件描述符fp是必须要的参数 """ # f = open(‘json_file‘,‘w‘) # json.dump({‘k‘:(1,3)},f) # f.close() # with open(‘json_file‘) as f: # ret = json.load(f) # print(ret,type(ret)) # ret = json.dumps((1,3,4)) # print(ret) # s = json.loads(ret) # print(s) # a = {‘name‘:‘tom‘,‘age‘:23} # with open(‘test.json‘,‘w‘,encoding=‘utf-8‘) as f: # f.write(json.dumps(a,indent=4)) #indent=4是a在文件中显示几行,默认是0行 # with open("test.json","r",encoding=‘utf-8‘) as f: # aa = json.loads(f.read()) #将包含str类型的JSON文档反序列化为一个python对象""" # f.seek(0) # bb = json.load(f) #将一个包含JSON格式数据的可读文件饭序列化为一个python对象 # print(aa) #{‘name‘: ‘tom‘,‘age‘: 23} # print(bb) #{‘name‘: ‘tom‘,‘age‘: 23} ? pickle模块 # 总结: shelve模块 # shelve也是python提供给我们的序列化工具,比pickle用起来更简单一些 import shelve # f = shelve.open(‘shelve_file‘) # f[‘key‘] = {‘int‘:10,‘float‘:9.5,‘string‘:‘Sample data‘} #直接对文件句柄操作,就可以存入数据 # f.close() # # f1 = shelve.open(‘shelve_file‘) # existing = f1[‘key‘] # f1.close() # print(existing) # 这个模块有个限制,它不支持多个应用同一时间往同一个DB进行写操作。所以当我们知道我们的应用如果只进行读操作,我们可以让shelve通过只读方式打开DB # 不支持多个人同时写,支持多个人同时读,如果只是读的化,就设置flag=‘r‘ import shelve # f = shelve.open(‘shelve_file‘,flag = ‘r‘) # existing = f[‘key‘] # f.close() # print(existing) # 由于shelve在默认情况下是不会记录待持久化对象的任何修改的,所以我们在shelve.open()时候需要修改默认参数,否则对象的修改不会保存。 # 正常情况下shelve打开的文件句柄感知不到值的修改,设置writeback = True就可以保存修改内容了 # f2 = shelve.open(‘shelve_file‘,writeback=True) # # print(f2[‘key‘]) # f2[‘key‘][‘new_value‘] = ‘this was not here before‘ # print(f2[‘key‘]) # f2.close() ? # 大总结: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |