day19常用模块2
1 shelve模块
也是一种序列化方式
使用方法
1.open sl = shelve.open("shelvetest.txt") 读出来s1是一个字典形式,注意关闭文件
2.读写 写进去 sl["date"] = "8-13" 读出来 s2.get("list1")
3.close 注意关闭文件
特点:使用方法比较简单 提供一个文件名字就可以开始读写
读写的方法和字典一致
你可以把它当成带有自动序列化功能的字典
原理: 内部使用的就是pickle 所以 也存在跨平台性差的问题 你自己存的只有你自己知道怎么取
2 xml 模块
标记指的是代表某种含义的字符 XML<>
为什么需要XML
为能够在不同的平台间继续数据的交换
为了使交换的数据能让对方看懂 就需要按照一定的语法规范来书写
XML语法格式:
一、任何的起始标签都必须有一个结束标签。
<tagname></tagname>
<tagname></tagname>
<tagname/> 简化写法
二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/)
三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如这是一串百度百科中的样例字符串。
这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
<tag1>
<tag2>
<tag3>
</tag3>
</tag2>
</tag1> 大白话 关闭标签应该从内往外 一层一层关闭 顺序不能乱
四、所有的特性都必须有值。
特性指的是属性
<person name="">
</person>
五、所有的特性都必须在值的周围加上双引号。
第一行应该有文档声明 用于高速计算机怎么理解
例如:<?xml version="1.0" encoding="utf-8"?>
当标签嵌套的时候会出现层级关系 如果一个标签不被任何别的标签包裹 那他就是根标签(最外层)
使用场景:
1.配置文件
2.常规的数据交换 例如从服务器获取一段新闻
作用是一样的 都是一种数据格式
xml比json先诞生
json的数据比xml小
目前json是主流
使用到的模块
ElmentTree 表示整个文件的元素树
属性
1.text 开始标签和结束标签中间的文本
2.attrib 所有的属性 字典类型
3.tag 标签的名字
方法
get 获取某个属性的值
1.解析XML
查找标签
find 在子标签中获取名字匹配第一个
findall 在子标签中获取名字匹配的所有标签
iter(tagname) 在全文中查找[匹配的所有标签 返回一个迭代器
2.生成XML
用ElmentTree
parse() 解析一个文件
getroot() 获取根标签
write() 写入到文件
3.修改xml
set 一个属性
remove 一个标签
append 一个标签
"""
import xml.etree.ElementTree as et
# 每一个标签就称之为一个节点 或 元素
# tree = et.parse("text.xml")
# # 获取根标签
# root = tree.getroot()
# # 获取所有的country 找的是第一个
# print(root.find("country"))
# # 找的是所有
# print(root.findall("country"))
#
# # 获取year
# print(root.iter("country"))
# for i in root.iter("country"):
# print(i)
#
#
# # 遍历整个xml
# for country in root:
# print(country.tag,country.attrib,country.text)
# for t in country:
# print(t.tag, t.attrib, t.text)
#
#
#
# print(root.find("country").get("name"))
# 读取到内存
tree = et.parse("text.xml")
for country in tree.findall("country"):
# yeartag = country.find("year")
# yeartag.text = str(int(yeartag.text) + 1) 修改标签文本
newtag = et.Element("newTag")
# 文本
newtag.text = "123"
#属性
newtag.attrib["name"] = "DSB"
#添加
country.append(newtag)
tree.write("text.xml",encoding="utf-8",xml_declaration=False)
day19常用模块2的更多相关文章
- day19:常用模块(collections,time,random,os,sys)
1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...
- python学习 day19 configparser模块 os模块 subprocess模块
上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...
- 20 Python 常用模块
collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...
- atitit 商业项目常用模块技术知识点 v3 qc29
atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...
- 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块
五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options] -v,--verbose ...
- python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化
生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...
- 进击的Python【第五章】:Python的高级应用(二)常用模块
Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...
- Python模块之常用模块,反射以及正则表达式
常用模块 1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...
- python学习笔记之常用模块(第五天)
参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...
随机推荐
- django使用session报错:no such table: django_session
Django版本:1.11.15 使用session的代码:request.session['key'] = value 运行后报错:no such table: django_session 解决办 ...
- 不同路径 II
一个机器人位于一个 m x n 网格的左上角 (起始点标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角. 现在考虑网格中有障碍物.那么从左上角到右下角将会有多 ...
- js-自定义对话框
引用插件 <link rel="stylesheet" type="text/css" href="${ctx }/resources/comm ...
- spring-IOC容器(一)
ApplicationContext 代表IOC容器(控制反转) ApplicationContext的主要实现类: ——ClassPathXmlApplicationContext:从类路径下加载配 ...
- hadoop行业技术创新解决方案
如今有很多公司都在努力挖掘他们拥有的大量数据,包括结构化.非结构化.半结构化以及二进制数据等,来探索对数据的深入利用. 大多数公司估计他们只分析了已有数据的12%,剩余88%还没有被充分利用.大量的数 ...
- 运行Spark提供的计算圆周率的示例程序
1.启动Spark服务 因为spark是依赖于hadoop提供的分布式文件系统的,所以在启动spark之前,先确保hadoop在正常运行. 在hadoop正常运行的情况下,在master(也就是had ...
- debian的python蓝牙库
sudo apt--dev pip install bluepy
- g++编译后中文显示乱码解决方案(c++)
g++编译后中文显示乱码解决方案 环境:Windows 10 专业版 GCC版本:5.3.0 测试代码: 1 #include <iostream> 2 using namespace ...
- Django--django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE
Django序列化时遇到错误: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESP ...
- 从源代码更新glibc
先看下INSTALL/README: mkdir一个目录专用于build: ../configure --prefix=/usr: make之后make check: 进入single user mo ...