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    优点:简单,占的空间小,可读性好

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

时间: 2024-11-09 02:42:46

json,pickle,shelve模块,xml处理模块的相关文章

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python序列化: json & pickle & shelve 模块

一.json & pickle & shelve 模块 json,用于字符串 和 python数据类型间进行转换pickle,用于python特有的类型 和 python的数据类型间进行转换Json模块提供了四个功能:dumps.dump.loads.loadpickle模块提供了四个功能:dumps.dump.loads.load json模块:下面通过一些示例来学习:首先我们来看json的dumps和loads方法 s1={"k1":"v1"}

python开发模块基础:序列化模块json,pickle,shelve

一,为什么要序列化 # 将原本的字典.列表等内容转换成一个字符串的过程就叫做序列化'''比如,我们在python代码中计算的一个数据需要给另外一段程序使用,那我们怎么给?现在我们能想到的方法就是存在文件里,然后另一个python程序再从文件里读出来.但是我们都知道,对于文件来说是没有字典这个概念的,所以我们只能将数据转换成字典放到文件中.你一定会问,将字典转换成一个字符串很简单,就是str(dic)就可以办到了,为什么我们还要学习序列化模块呢?没错序列化的过程就是从dic 变成str(dic)的

Python学习第十三天 time datetime random os sysshutil json pickle shelve xml configparser hashlib suprocess logging re

https://www.cnblogs.com/yuanchenqi/articles/5732581.html https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label2 一 time与datetime模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(time.time())”,返回的是fl

常用模块(json/pickle/shelve/XML)

一.json模块(重点) 一种跨平台的数据格式 也属于序列化的一种方式 介绍模块之前,三个问题: 序列化是什么? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化. 反序列化又是什么? 将硬盘上存储的中间格式数据在还原为内存中的数据结构 为什么要序列化? 1.持久保持状态 2.跨平台数据的交互 JSON是什么? java script object notation 就是对象表示法 var obj = {"name":"egon"} 对于我们开发而言 j

保存数据到文件的模块(configparser,json,pickle,shelve,xml)_python

一.各模块的主要功能区别 configparser模块:保存字典内容到文件,并按照一定的格式写入文件保存. shelve模块:将对象写入到文件,保存没有格式,较为轻便. json模块:将对象从内存中完成序列化存储,但是不能对函数和类进行序列化,写入的格式是明文. pickle模块:将对象从内存中完成序列化存储,可以能对函数进行序列化,写入的格式是二进制格式. xml模块:不同语言或程序之间数据交换(较少用) 二.各模块使用例子 1.configparser模块 (1)写入文件 import co

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle. 之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pic

Python基础(20)——常用模块sys,os,json,pickle,shelve,xml,re,basedir

纠正上节课的一些错误 __name__  在入口函数中 等于'__main__'   ,在被import导入的情况下等于路径下的自己文件的名字 import os 路径是在lib下面    而sys,time模块不在lib下面,因为他们是C语言实现的内置在解释器里面的,优先级最高 sys.path.append()这个修改路径是临时的修改 ,如果永久修改需要到系统里去设置 环境变量里的系统变量 原文地址:https://www.cnblogs.com/dayouge/p/11158930.htm

json&pickle&shelve模块

之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值. 什么是序列化? 我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思