常用模块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. Anaconda详细安装使用教程

    版权声明:本文为博主原创文章,欢迎大家转载,但是要注明我的文章地址. https://blog.csdn.net/program_developer/article/details/79677557 ...

  2. 基于MVC4+EasyUI的Web开发框架形成之旅(4)--附件上传组件uploadify的使用

    大概一年前,我还在用Asp.NET开发一些行业管理系统的时候,就曾经使用这个组件作为文件的上传操作,在随笔<Web开发中的文件上传组件uploadify的使用>中可以看到,Asp.NET中 ...

  3. python调用hanlp分词包手记

    python调用hanlp分词包手记   Hanlp作为一款重要的分词工具,本月初的时候看到大快搜索发布了hanlp的1.7版本,新增了文本聚类.流水线分词等功能.关于hanlp1.7版本的新功能,后 ...

  4. Spring Cloud(Dalston.SR5)--Eureka 注册中心搭建

    基于 Netflix Eureka 做了二次封装,主要负责完成微服务架构中的服务治理功能,服务治理可以说是微服务架构中最为核心和基础的模块,他主要用来实现各个微服务实例的自动化注册与发现 服务注册:在 ...

  5. USB引脚定义

  6. PHP CutyCapt生成网页url截图

    Requirements: 1,需要一个linux系统. 2, X-Server.(在命令行下实现对X-server的模拟,渲染图形进行缓存)-在没有安装X-Server的环境下提供图像渲染) Age ...

  7. CentOS 7 firewalld vsftpd开放端口

    开放FTP端口的方法: 暂时开放 ftp 服务 firewall-cmd --add-service=ftp 1 永久开放 ftp 服务 firewall-cmd --add-service=ftp ...

  8. 微信JS API PHP类

    CURL操作类: <?php namespace app\common; class curl{ public static function wxcurl($getUrl){ $ch = cu ...

  9. DateGridView标题列头添加复选框

    第一:添加列标题时,添加两个空格——用于显示复选框: 第二:实现列标题添加复选框,代码如下: private void AddCheckeBoxToDGVHeader(DataGridView dgv ...

  10. windows server core 远程桌面

    要允许其它计算机透过远程桌面登入Server Core主机,我们需要先调整注册机码,并开启对应的防火墙端口号首先,我们开启登录编辑程序(regedit.exe),找到HKEY_LOCAL_MACHIN ...