常用模块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.常规的数据交换  例如从服务器获取一段新闻
        与json的区别:
            作用是一样的 都是一种数据格式
            xml比json先诞生
            json的数据比xml小
            目前json是主流
        python中的xml处理
            使用到的模块
            ElmentTree 表示整个文件的元素树
            Elment 表示一个节点
                属性
                1.text      开始标签和结束标签中间的文本
                2.attrib    所有的属性     字典类型
                3.tag       标签的名字
                方法
                    get 获取某个属性的值
            1.解析XML
                查找标签
                find      在子标签中获取名字匹配第一个
                findall   在子标签中获取名字匹配的所有标签
                iter(tagname)      在全文中查找[匹配的所有标签 返回一个迭代器
            2.生成XML
                用ElmentTree
                parse()  解析一个文件
                getroot() 获取根标签
                write()  写入到文件
            3.修改xml
                set 一个属性
                remove 一个标签
                append 一个标签
# 语法格式练习: 要求把你的同桌的手机信息用xml来描述
"""
import xml.etree.ElementTree as et
# 读取xml文档到内存中  得到一个包含所有数据的节点树
# 每一个标签就称之为一个节点 或 元素
# 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"))
# =============================================修改  第所有的country的year文本  改成加1
# 读取到内存
tree = et.parse("text.xml")
for country in tree.findall("country"):
    # yeartag = country.find("year")
    # yeartag.text = str(int(yeartag.text) + 1)   修改标签文本
    # country.remove(country.find("year"))     删除标签
    # 添加子标签
    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的更多相关文章

  1. day19:常用模块(collections,time,random,os,sys)

    1,正则复习,re.S,这个在用的最多,re.M多行模式,这个主要改变^和$的行为,每一行都是新串开头,每个回车都是结尾.re.L 在Windows和linux里面对一些特殊字符有不一样的识别,re. ...

  2. python学习 day19 configparser模块 os模块 subprocess模块

    上周五回顾 logging 用于记录日志 四种核心角色: 生成器Logger 过滤器Filter 处理器Handler 格式化处理器 Formatter logging.info.debug 使用默认 ...

  3. 20 Python 常用模块

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  4. atitit 商业项目常用模块技术知识点 v3 qc29

    atitit 商业项目常用模块技术知识点 v3 qc29 条码二维码barcodebarcode 条码二维码qrcodeqrcode 条码二维码dm码生成与识别 条码二维码pdf147码 条码二维码z ...

  5. 《Ansible权威指南》笔记(3)——Ad-Hoc命令集,常用模块

    五.Ad-Hoc命令集1.Ad-Hoc命令集通过/usr/bin/ansible命令实现:ansible <host-pattern> [options]    -v,--verbose  ...

  6. python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

    生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...

  7. 进击的Python【第五章】:Python的高级应用(二)常用模块

    Python的高级应用(二)常用模块学习 本章学习要点: Python模块的定义 time &datetime模块 random模块 os模块 sys模块 shutil模块 ConfigPar ...

  8. Python模块之常用模块,反射以及正则表达式

    常用模块  1. OS模块 用于提供系统级别的操作,系统目录,文件,路径,环境变量等 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("di ...

  9. python学习笔记之常用模块(第五天)

    参考老师的博客: 金角:http://www.cnblogs.com/alex3714/articles/5161349.html 银角:http://www.cnblogs.com/wupeiqi/ ...

随机推荐

  1. AES 加解密 Java实现

    package com.smt.cipher.symmetry; import java.nio.charset.Charset; import java.security.SecureRandom; ...

  2. openstack 开启 spice远程连接

    openstack 默认开的远程控制是novnc 这里是用kolla初建的openstack nova_console vi /etc/kolla/globals.yml ... # Valid op ...

  3. jmeter ---监控服务器CPU, 内存,网络数据

    JMeter如何收集获得服务器cpu,内存,磁盘,网络等相关资源使用率的信息 1. JMeter 自带的Monitor Results 监控 JMeter 自带的Monitor Results 在官网 ...

  4. 设计模式-责任链模式Chain of Responsibility)

    一.定义 职责链模式是一种对象的行为模式.在职责链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链.请求在这个链上传递,直到链上的某一个对象决定处理此请求.发出这个请求的客户端并不知道链 ...

  5. shopnc-setNcCookie-后台验证码

    function setNcCookie($name, $value, $expire='3600', $path='', $domain='.a.cn', $secure=false){ if (e ...

  6. ionic 监听页面滚动,点击停止滚动

    类似今日头条,页面上有很多card,点击每个card跳转该card的详情页面.这里有一个问题,当我滚动页面时,会先后触发touchstart.touchmove.touchend,但是当touchen ...

  7. ubuntu 阿里云 常出问题 运维工作日志

    一.2015-8.26(数据库 error—28) tmp文件临时数据写入不了----解决办法 1.查看临时文件 ls -l 找到了 2.由此可以查看得出来tmp文件有的权限是有的 3.查看tmp 存 ...

  8. SVN怎么触发Jenkins自动构建

    通常,有几种方式可以在SVN仓库发生改变时触发Jenkins进行构建.第一种是,Jenkins主动轮询SVN仓库:第二种是,在SVN客户端(如TortoiseSVN)创建客户端hooks来触发构建:第 ...

  9. 使用JavaScript完成文字向上间歇滚动

    使用JavaScript完成文字的间歇滚动 const init = (initData) => { const area = initData.area; // 设置单行滚动的高度: cons ...

  10. Hadoop 管理工具HUE配置-hdfs_clusters配置

    在HUE的hdfs_clusters中目前主要是配置hdfs相关的,配置好了之后便可以在hue中愉快的管理数据了,不过目前的配置还是比较...简单的..    里面的配置主要是参考了hue官方文档,还 ...