json:
# 是一种跨平台的数据格式
也属于序列化的一种方式
pickle和shevle 序列化后得到的数据 只有python才可以解析
通常企业开发不可能做一个单机程序 都需要联网进行计算机间的交互 JSON是什么?java script object notation 就是对象的表示法
var obj={"name":"egon"}
对于我们开发而言 json就是v一种通用的数据格式 任何语言都能解析
js 中的数据类型 python中的数据类型
{} 字典
[] list
string "" str
int/float int/float json格式的语法规范
最外层必须是一个字典或列表
{}or[]
只要你想写一个json格式的数据 那么最外层常用字典{}
字符串必须用“”来表示
你可以在里面套用任意多的层次 举例:
反序列化
loads:
import json
with open("a.json","rt",encoding="utf-8")as f:
res=json.loads(f.read())
print(res) load:
with open("a.json","rt",encoding="utf-8")as f:
print(json.load(f)) 直接解析字符串的json为python个格式
jsontext="{"name":"egon"}"
res=json.loads(jsontext)
print(res) mydic={"name":"egon"}
with open("b.json","wt",encoding="utf-8")
f.write(json.dunps(mydic)) with open("b.json","wt",encoding="utf-8")
json.dunp(mydic, f)) pickle:(一个用来序列化的模块)
# 专用与python语言的序列化
市场python中所有的数据格式
序列化:将内存中的数据结构转化为一种中间格式 并存储到硬盘
反序列:将硬盘上存储的中间格式数据在还原为内存中的数据结构
为什么要序列化:就是为了将数据持久存储
之前学过的文件也可以完成持久化存储 但是操作起来非常麻烦 pickle模块的主要功能:
dump:序列化
load:反序列化
不带s的是帮你封装write read 更方便
load函数可以多次执行 每次load 都是往后再读一个对象 如果没
有了就抛出异常 举例:
序列化过程:
user={xx:xxx,xx:xxx...}
with open('uu.txt','wb')as f:
user=pickle.dumps(user)
f.write(user) 反序列过程:
with open('uu.txt','rb')as f:
user_dic=f.read()
user=pickle.loads(user_dic)
print(user) dump使用(直接序列化到文件)
with open('xx.txt','wb')as f:
pickle.dump(user,f) load从文件反序列化
with open('xx.txt','wb')as f:
user=pickle.load(f)
print(user) xml(# 可扩展的标记语言)一种编写文档的语法 也支持跨平台
<></>和</>
也是一种通用的数据格式
之所以用它也是因为跨平台
比较json而言 属于重量级
xml语法标准:
1.任何的起始标签都必须有一个结束标签
2.可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签.
这种语法实在大于符号之前紧跟一个斜线(/),例如<百度百科/> ,xml解
释器会将其翻译成<百度百科></百度百科>
3.标签必须按照合适的孙旭进行嵌套,所以结束标签必须按镜像顺序匹配
起始标签.这好比是将起始和结束标签看作是数学中的左右括号:在没有
关闭所有的内部括号之前,是不能关闭外面的括号的.
4.所有的特性都必须有值
5.所有的特性都必须在值的周围加上双引号 一个标签的组成部分;
<tagename 属性名称="属性值">文本内容
</tagename>
单标签的写法:
<tagename 属性名称="属性值"> 镜像关闭顺序实例:
<a>
<b>
<name>man</name>
</b>
</a> 解析一个xml实例:
import xml.etree.ElementTree as ElementTree
#解析d.xml
tree=ElementTree.parse("d.xml")
print(tree)
#获取根目录
rootTree=tree.getroot()
#三种获取数据的方式:(获取所有人的年龄)
#第一种iter是在全文范围获取标签:
for item in rootTree.iter("age"):
#一个标签三个组成部分
print(item.tag)#标签的名称
print(item.attrib)#标签的属性
print(item.text)#文本内容 #第二种 从当前标签的子标签中找一个名称为age的标签 如果有
# 多个 找到的是第一个
print(rootTree.find("age").attrib) #第三种 从当前标签的子标签中找到所有名称为age的标签
print(rootTree.finddall("age")) # 获取单个属性
stu=rootTree.find("stu")#找寻到标签stu
print(stu.get("age"))#打印标签stu中的age的属性值 # 删除子标签
rootTree.remove(stu)#删除标签stu #添加子标签
#首先要先创建一个子标签
newTag=ElementTree.Element("这是新的标签",{"一个属性":"值"})
rootTree.append(newTag) # 写入文件
tree.write("f.xml",encoding='utf-8') #取子标签中的属性值
rootTree=tree.getroot()
users=[]
for item in rootTree.iter("stu"):
user=item.attrib
print(user)
gitem=item.find("girlfriend")
user["girlfriend"]=gitem.attrib
users.append(user)
print(users) shelve:
# 极其简单的序列化模块 只用于python
它用于序列化 不需要关心文件模式什么的 直接把它当成一个字典来看待
它可以直接对数据进行修改 而不用覆盖原来的数据
而pickle 你想要修改只能 用wb模式来覆盖
import shelve
user={xx:xxx}
s=shelve.oopen('userdb.shv')
s['user']=user
s.close() 反序列取
s=sheelve.open('userdb.shv')
print(s['user'])
s.close() 取的时候修改
s=sheelve.open('userdb.shv',writeback=True)
print(s['user'])
s['user']['age']=20
s.close() configparser(.cfg格式)
配置文件解析模块
config parser
用于解析配置文件的模块
何为配置文件:
包含配置程序信息的文件就惩治为配置文件
什么样的数据应该作为配置信息
需要改 但是不经常改 例如数据文件的路径 DB_PATH
配置文件中 只有两种内容
一种是section 分区
一种是option 选项 就是一个key=value形式
我们用的最多的就是get功能 用来从配置文件获取一个配置选项 #判断是否有某个选项:
config.has_option()
#是否有某个分区:
config.has_section() 举例aa.cfg下
[path]
DB_PATH=C://myfile/test.txt
[user]
name = 高根
age = 20 import configparser
#创建一个解释器
config=configparser.ConfigParser()
#读取并解析aa.cfg
config.read(aa.cfg,encouding="utf-8")
#获取需要的信息
#获取所有分区
print(config.sections())
#获取所有选项
print(config.options("user"))
#获取某个选项的值(默认是字符串)
#getint getfloat getbool(可以直接转换类型)
print(config.get("path","DN_PATH")) 不太常用的
1.添加
config.add_section("server")
2.删除
config.remove_option("user","age")
3.修改
config.set("server","url","192.168.1.1")
写回文件中
with open("aa.cfg","wt",encoding="utf_8")as f:
config.write(f)

json pickle xml shelve configparser的更多相关文章

  1. python常用模块:pickle、shelve、json、xml、configparser

    今日内容主要有: 一.pickle模块二.shelve模块三.json模块四.json练习五.xml模块 六.xml练习七.configparser模块 一.pickle模块 #pickle是一个用来 ...

  2. python基础--json,pickle和shelve模块

    一.JSON &pickle 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换  字符串必须是双引号,不能是单引号 pickle,用于python特有的类型 和 ...

  3. 第二十一天,pickle json xml shelve configparser模块

    今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 ...

  4. Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser

    什么是序列化/反序列化? 序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输,反序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构 为什么要有序列化/反序列化? 1 ...

  5. 序列化模块组 pickle,json , xml , shelve , configparser

    序列化是什么? 序列化指的是将内存中的数据结构转化为一种中间格式 并存储到硬盘上. 反序列化是什么? 将硬盘上存储的中间格式数据再还原为内存中的数据结构. 为什么要有序列化? 是为了将数据持久存储 较 ...

  6. 常用模块xml,shelve,configparser,hashlib

    XML 什么XML:全称 可扩展标记语言 标记指的是代表某种含义的字符 XML<> 为什么需要XML 为能够在不同的平台间继续数据的交换 为了使交换的数据能让对方看懂 就需要按照一定的语法 ...

  7. json&pickle&xml

    json .dumps()    变成 json 的字符串 import json dic={"name":"alex"} data=json.dumps(di ...

  8. 19-[模块]-json/pickle、shelve

    1.序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes (1)把字典保存到文件 data = { 'roles': [ ...

  9. Python学习第十二课——json&pickle&XML模块&OS模块

    json模块 import json dic={'name':'hanhan'} i=8 s='hello' l=[11,22] data=json.dumps(dic) #json.dumps() ...

随机推荐

  1. First Bad Version leetcode java

    问题描述: You are a product manager and currently leading a team to develop a new product. Unfortunately ...

  2. FileZilla 客户端连接 FlieZilla 服务器 连接成功读取目录列表却失败的解决办法

    解决过程: 第一步: 第二步:

  3. 日期在Linux与Windows下的区别

    最近遇到了这个问题,就是相同的代码在Windows与Linux下的日期转换不一致. 原因:时区问题,主要是操作系统与JVM中的时区不同导致的 在网上查了很多处理的方法:最后总结出一条简单粗暴的方法:原 ...

  4. MySQL使用的常见问题

    (一)是否启动了服务器 如果没有启动报错:ERROR 2003 (HY000): Can't connect to MySQL server on ‘localhost' (10061) 解决方法:启 ...

  5. SQLServer清空表

    TRUNCATE TABLE TABLE_NAME 这个不记日志. delete table table_name 这个记日志 drop table table_name 删除表 TRUNCATE 语 ...

  6. C# 语法特性 - 泛型(C#2.0)

    泛型将 类型参数 的概念引入了 .NET Framework. 泛型主要有两个优点: 1.编译时可以保证类型安全. 2.不用做类型转换,获得一定的性能提升. 泛型方法.泛型委托.泛型接口 除了泛型类之 ...

  7. 浅谈mysql中各种表空间(tablespaces)的概念

    mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...

  8. wps去除首字母自动大写

    首字母大写功能在不是进行英文编写时是个“自作聪明”的功能,我们可能会想把它关掉.

  9. linux下iostat命令详解

    iostat用于输出CPU和磁盘I/O相关的统计信息 iostat语法 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...

  10. Unity中Button按钮的触发监听事件

    第一种方式:需要把自己添加的Button按钮属性(Inspector)中的(Button)onclick添加方法. public void BtnCreteClick() { Debug.Log(&q ...