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. Prime Ring Problem HDU - 1016

    A ring is compose of n circles as shown in diagram. Put natural number 1, 2, ..., n into each circle ...

  2. Fox And Dinner CodeForces - 510E (最大流)

    大意: n只狐狸, 要求分成若干个环, 每个环的狐狸不少于三只, 相邻狐狸年龄和为素数. 狐狸年龄都>=2, 那么素数一定为奇数, 相邻必须是一奇一偶, 也就是一个二分图, 源点向奇数点连容量为 ...

  3. python记录_day30 多进程

    1.什么是进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础. 同一个程序执行两次,就会产生两个进程 ## 进程调度算 ...

  4. IntelliJ IDEA调试方法补充

    基本用法&快捷键 1.首先说第一组按钮,共8个按钮,从左到右依次如下: > Show Execution Point (Alt + F10):如果你的光标在其它行或其它页面,点击这个按钮 ...

  5. AutoMatic merge failed;fix conflicts and then commit the result.解决方法

    意思是: 冲突内容:合并冲突在 XXXX.DS_Store文件中 自动合并失败:修改冲突然后提交修改后的结果. <<<<<<<< HEAD 你写的代码 ...

  6. Matlab-5:牛顿迭代法工具箱

    function [f,L]=Newton(f,a) %this is newton teration whic is used for solving implicit One-dimensiona ...

  7. JQ 实现监测input中值的变化并绑定到另个input

                    $('#input').bind('input propertychange', function () {                     $('#myDiv ...

  8. TCP如何保证可靠性

    如何保证可靠性? 1.校验和.在TCP的首部中有一个占据16为的空间用来放置校验和的结果. 这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化.如果收到段的检验和有差错,TCP将丢弃这个报文 ...

  9. CRM WEB UI 01 BOL向导创建的搜索

    创建BOL的步骤就不说了,自己找,学习这个之前,需要自己先找个SAP CRM资料预习一下 T-CODE:BSP_WD_CMPWB 1.创建组件:输入组件名:ZLYTEST03,点击创建按钮,回车,选择 ...

  10. 在Vue中关闭Eslint 的方法

    在vue项目中关闭ESLint方法:找到 webpack.base.conf.js 将这些代码注释掉, { test: /\.(js|vue)$/, loader: 'eslint-loader', ...