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. python记录_day01 初始

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum),人称龟叔.目前python主要应用于web开发.云计算.科学计算.人工智能.系统运维.金融.图形GUI等 ...

  2. Spring配置表友好性优化思路

    Spring配置表需要尽量保证对程序员的友好性,一下提供一种优化思路. 中途未保存,心态炸了,只贴图了,fuuuuuuuuuuuuuck 第一种(最烂,最不友好):以Json的格式保存在配置表中,程序 ...

  3. 6月4 Smarty练习增删改

    练习Smarty的增删改所需要用到的数据库名称:timu,xuanxiang,kemu,nandu,leixing,然后使用smarty模板将前端后后台分割开来: 主页后台页面:zhupm.php & ...

  4. Leetcode 969. 煎饼排序

    969. 煎饼排序  显示英文描述 我的提交返回竞赛   用户通过次数134 用户尝试次数158 通过次数135 提交次数256 题目难度Medium 给定数组 A,我们可以对其进行煎饼翻转:我们选择 ...

  5. tomcat从manager部署war项目上传失败

    tomcat从manager部署war项目上传失败, 查看manager.2018-07-17.log 日志,可以看到如下信息. less manager.2018-07-17.log 17-Jul- ...

  6. [codechef July Challenge 2017] Pishty and tree

    PSHTTR: Pishty 和城堡题目描述Pishty 是生活在胡斯特市的一个小男孩.胡斯特是胡克兰境内的一个古城,以其中世纪风格的古堡和非常聪明的熊闻名全国.胡斯特的镇城之宝是就是这么一座古堡,历 ...

  7. 连接zookeeper+solr的服务器超时

    在连接zookeeper+solr的服务器超时,如果检查各ip地址都没有变动,各部分工程也没有书写问题,那么连接超时,就可能是该服务器内存分配过少,性能不足的问题,扩大该服务器内存即可.

  8. python字符串内建函数

  9. summary_22rd Nov 2018

    一. 列表:记录同种属性的多个值 定义:在[]中用逗号分隔开多个任意的值 类型转换:L=list( )  括号中的内容必须是可迭代类型,包括字符串,列表,字典等 常用操作和内置方法: 1.按照索引位置 ...

  10. Java文档注释导出帮助文档和项目的jar包导入和导出。

    1.1      文档注释导出帮助文档 在eclipse使用时,可以配合文档注释,导出对类的说明文档,从而供其他人阅读学习与使用. 通过使用文档注释,将类或者方法进行注释用@简单标注基本信息.如@au ...