码迷,mamicode.com
首页 > Web开发 > 详细

json,pickle,shelve模块,xml处理模块

时间:2019-02-06 21:16:05      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:文件   数据集   bsp   嵌套   写入文件   one   序列化   若是   code   

常用模块学习—序列化模块详解

  • 什么叫序列化?

    • 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受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处理模块

标签:文件   数据集   bsp   嵌套   写入文件   one   序列化   若是   code   

原文地址:https://www.cnblogs.com/joneylulu/p/10353986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!