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() ...
随机推荐
- css 选择器二
2.4 盒模型 2.4.1 定义 在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子.我们称为这种盒子叫盒模型. 盒模型 ...
- strom:实时的WordCount
集采单词 package wordcount; import java.io.File; import java.io.IOException; import java.util.Collection ...
- json加密
有的时候我们为了传参数的URL比较安全,我们一般会用json加密的方法来使自己的URL安全. $a['order_sn'] = $orderNo;$data = json_encode( $a);$d ...
- Spring ApplicationListener使用方法及问题
使用场景 在一些业务场景中,当容器初始化完成之后,需要处理一些操作,比如一些数据的加载.初始化缓存.特定任务的注册等等.这个时候我们就可以使用Spring提供的ApplicationListener来 ...
- python爬虫---BeautifulSoup的用法
BeautifulSoup是一个灵活的网页解析库,不需要编写正则表达式即可提取有效信息. 推荐使用lxml作为解析器,因为效率更高. 在Python2.7.3之前的版本和Python3中3.2.2之前 ...
- Hadoop格式化 From hu-hadoop1/192.168.11.11 to hu-hadoop2:8485 failed on connection exception: java.net.
192.168.11.12:8485: Call From hu-hadoop1/192.168.11.11 to hu-hadoop2:8485 failed on connection excep ...
- PHP如何自定义PHP内置函数
其实对于PHP程序员,有个纯PHP的解决方案.在php.ini里有个配置项 auto_prepend_file,可以设置一个PHP文件作为每次执行前自动加载的文件. 在这个文件里写函数,你就可以当成定 ...
- Linux软件源书写格式解析及本地yum源制作
1.Debian类系统 配置文件:/etc/apt/sources.list 例子:deb https://mirrors.aliyun.com/kali kali-rolling main cont ...
- 整合Spring Security(二十七)
在这一节,我们将对/hello页面进行权限控制,必须是授权用户才能访问.当没有权限的用户访问后,跳转到登录页面. 添加依赖 在pom.xml中添加如下配置,引入对Spring Security的依赖. ...
- PhpStudy的安装及使用教程
1.PhpStudy是什么 phpstudy是一个PHP调试环境的程序集成包,phpStudy软件集成了最新的Apache.PHP.MySQL.phpMyAdmin.ZendOptimizer,一次性 ...