json,pickle,shelve模块,xml处理模块
Posted joneylulu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了json,pickle,shelve模块,xml处理模块相关的知识,希望对你有一定的参考价值。
常用模块学习—序列化模块详解
-
什么叫序列化?
- 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes。
-
为什么要序列化?
- 你打游戏过程中,打累了,停下来,关掉游戏、想过2天再玩,2天之后,游戏又从你上次停止的地方继续运行,你上次游戏的进度肯定保存在硬盘上了,是以何种形式呢?游戏过程中产生的很多临时数据是不规律的,可能在你关掉游戏时正好有10个列表,3个嵌套字典的数据集合在内存里,需要存下来?你如何存?把列表变成文件里的多行多列形式?那嵌套字典呢?根本没法存。所以,若是有种办法可以直接把内存数据存到硬盘上,下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。
data = { ‘roles‘:[ {‘role‘:‘monster‘,‘type‘:‘pig‘,‘life‘:50}, {‘role‘:‘hero‘,‘type‘:‘关羽‘,‘life‘:80}, ] } #将数据写入game_status文件 #f = open("game_status","w") #f.write(str(data)) #将数据从game_status文件读出来 f = open("game_status","r") d = f.read() d = eval(d) print(d[‘roles‘]) #把内存数据转成字符,叫序列化 #把字符转成内存数据,叫反序列化
-
用于序列化的两个模块:
-
-
json,用于字符串 和 python数据类型间进行转换
-
pickle,用于python特有的类型 和 python的数据类型间进行转换
-
常用模块学习—序列化json模块详解
Json模块提供了四个功能:
-
dumps(
将数据通过特殊的形式转换为只有python语言认识的字符串
) -
dump(
将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
) -
loads(
将数据通过特殊的形式转换为所有程序语言都认识的字符串
) -
load(
将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
)
import json #1、 data = { ‘roles‘:[ {‘role‘:‘monster‘,‘type‘:‘pig‘,‘life‘:50}, {‘role‘:‘hero‘,‘type‘:‘关羽‘,‘life‘:80}, ] } #d = json.dumps(data) #dumps里存一个值 #print(d,type(d)) f = open("test.json","w") #json格式的文件,以json为拓展名 json.dump(data,f) #转入字符并写入文件。 #dump里存两个值 #2、 data = { ‘roles‘:[ {‘role‘:‘monster‘,‘type‘:‘pig‘,‘life‘:50}, {‘role‘:‘hero‘,‘type‘:‘关羽‘,‘life‘:80}, ] } d = json.dumps(data) #仅转成字符串 d2 = json.loads(d) print(d2[‘roles‘]) #结果为:[{‘role‘: ‘monster‘, ‘type‘: ‘pig‘, ‘life‘: 50}, {‘role‘: ‘hero‘, ‘type‘: ‘关羽‘, ‘life‘: 80}] #3、从文件中加载回来 # data = { # ‘roles‘:[ # {‘role‘:‘monster‘,‘type‘:‘pig‘,‘life‘:50}, # {‘role‘:‘hero‘,‘type‘:‘关羽‘,‘life‘:80}, # ] # } f = open("test.json","r") data = json.load(f) print(data[‘roles‘]) #结果为:[{‘role‘: ‘monster‘, ‘type‘: ‘pig‘, ‘life‘: 50}, {‘role‘: ‘hero‘, ‘type‘: ‘关羽‘, ‘life‘: 80}] f.close() #只是把数据类型转成字符串存到内存里的意义? #json.dumps json.loads #1、把你的内存数据 通过网络 共享给远程其他人(硬盘或网络传输时只能接受bytes ) #2、定义了不同编程语言之间的交互规则 #纯文本 缺点:不能共享复杂的数据类型 #xml 缺点:占的空间大 #json 优点:简单,占的空间小,可读性好
以上是关于json,pickle,shelve模块,xml处理模块的主要内容,如果未能解决你的问题,请参考以下文章
第二十天,pickle json xml shelve configparser模块
python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess