常用模块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. django使用session报错:no such table: django_session

    Django版本:1.11.15 使用session的代码:request.session['key'] = value 运行后报错:no such table: django_session 解决办 ...

  2. 不同路径 II

    一个机器人位于一个 m x n 网格的左上角 (起始点标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角. 现在考虑网格中有障碍物.那么从左上角到右下角将会有多 ...

  3. js-自定义对话框

    引用插件 <link rel="stylesheet" type="text/css" href="${ctx }/resources/comm ...

  4. spring-IOC容器(一)

    ApplicationContext 代表IOC容器(控制反转) ApplicationContext的主要实现类: ——ClassPathXmlApplicationContext:从类路径下加载配 ...

  5. hadoop行业技术创新解决方案

    如今有很多公司都在努力挖掘他们拥有的大量数据,包括结构化.非结构化.半结构化以及二进制数据等,来探索对数据的深入利用. 大多数公司估计他们只分析了已有数据的12%,剩余88%还没有被充分利用.大量的数 ...

  6. 运行Spark提供的计算圆周率的示例程序

    1.启动Spark服务 因为spark是依赖于hadoop提供的分布式文件系统的,所以在启动spark之前,先确保hadoop在正常运行. 在hadoop正常运行的情况下,在master(也就是had ...

  7. debian的python蓝牙库

    sudo apt--dev pip install bluepy

  8. g++编译后中文显示乱码解决方案(c++)

    g++编译后中文显示乱码解决方案   环境:Windows 10 专业版 GCC版本:5.3.0 测试代码: 1 #include <iostream> 2 using namespace ...

  9. Django--django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE

    Django序列化时遇到错误: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESP ...

  10. 从源代码更新glibc

    先看下INSTALL/README: mkdir一个目录专用于build: ../configure --prefix=/usr: make之后make check: 进入single user mo ...