json pickle xml shelve configparser
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的更多相关文章
- python常用模块:pickle、shelve、json、xml、configparser
今日内容主要有: 一.pickle模块二.shelve模块三.json模块四.json练习五.xml模块 六.xml练习七.configparser模块 一.pickle模块 #pickle是一个用来 ...
- python基础--json,pickle和shelve模块
一.JSON &pickle 用于序列化的两个模块 json,用于字符串 和 python数据类型间进行转换 字符串必须是双引号,不能是单引号 pickle,用于python特有的类型 和 ...
- 第二十一天,pickle json xml shelve configparser模块
今日内容 1.pcikle 专用于python语言的序列化 2.json 是一种跨平台的数据格式 也属于序列化的一种方式 3.xml 可拓展标记语言 一种编写文档的语法 也支持跨平台 比较json而言 ...
- Learning-Python【20】:Python常用模块(3)—— shelve、pickle、json、xml、configparser
什么是序列化/反序列化? 序列化就是将内存中的数据结构转换成一种中间格式存储到硬盘或者基于网络传输,反序列化就是硬盘中或者网络中传来的一种数据格式转换成内存中数据结构 为什么要有序列化/反序列化? 1 ...
- 序列化模块组 pickle,json , xml , shelve , configparser
序列化是什么? 序列化指的是将内存中的数据结构转化为一种中间格式 并存储到硬盘上. 反序列化是什么? 将硬盘上存储的中间格式数据再还原为内存中的数据结构. 为什么要有序列化? 是为了将数据持久存储 较 ...
- 常用模块xml,shelve,configparser,hashlib
XML 什么XML:全称 可扩展标记语言 标记指的是代表某种含义的字符 XML<> 为什么需要XML 为能够在不同的平台间继续数据的交换 为了使交换的数据能让对方看懂 就需要按照一定的语法 ...
- json&pickle&xml
json .dumps() 变成 json 的字符串 import json dic={"name":"alex"} data=json.dumps(di ...
- 19-[模块]-json/pickle、shelve
1.序列化? 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes (1)把字典保存到文件 data = { 'roles': [ ...
- Python学习第十二课——json&pickle&XML模块&OS模块
json模块 import json dic={'name':'hanhan'} i=8 s='hello' l=[11,22] data=json.dumps(dic) #json.dumps() ...
随机推荐
- DRF之接口文档以及Xadmin
1. 自动生成接口文档 REST framework可以自动帮助我们生成接口文档. 接口文档以网页的方式呈现. 自动接口文档能生成的是继承自APIView及其子类的视图. 1.1. 安装依赖 REST ...
- BottomNavigationBar使用详解
gitHub地址:https://github.com/Ashok-Varma/BottomNavigation 一.基本使用 1.在AndroidStudio下添加依赖: compile 'com. ...
- spring boot(二十)使用spring-boot-admin对服务进行监控
上一篇文章<springboot(十九):使用Spring Boot Actuator监控应用>介绍了Spring Boot Actuator的使用,Spring Boot Actuato ...
- linux的越墙方法
.首先要安装openSSH, Ubuntu缺省没有安装SSH Server,使用以下命令安装: sudo apt-get install openssh-server 但是系统有时候会出现E类错误,无 ...
- HDU-4587-tarjin/割点
http://acm.hdu.edu.cn/showproblem.php?pid=4587 给出一幅无向图,问除去两个点之后子图的最大联通分量个数. 考虑每次ban一个点然后跑一遍tarjin统计下 ...
- oracle错误整理
1. ORA-31640: unable to open dump file 解决:原来11g R2的IMPDP 增加了一个参数设置:CLUSTER,在设置了parallel参数>1的情况下, ...
- 第 3 章 HTML5 网页中的文本和图像
文字和图像是网页中最主要.最常用的元素. 在互联网高速发展的今天,网站已经成为一个展示与宣传自我的通信工具(公司或个人可以通过网站介绍公司的服务与产品或介绍自己).这些都离不开网站中的网页,而网页的内 ...
- JavaScript 上万条数据 导出Excel文件 页面卡死
最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var ...
- APP安全防护基本方法(混淆/签名验证/反调试)
本教程所用Android Studio测试项目已上传:https://github.com/PrettyUp/SecTest 一.混淆 对于很多人而言是因为java才接触到“混淆”这个词,由于在前移动 ...
- Laravel框架如何去除URL中的/public
laravel/server.php改名为index.php 并且将public目录下的.htaccess拷贝到Larvael根目下 再访问 如有配置不成功的请加群