• day19


    今日学习内容

    1、shelve模块

    2、XML模块

    3、configparser模块

    4、hashlib模块

    shelve模块:

    什么是shelve模块?

    一种序列化方式,使用方法简单,读写方法与字典一致,可以把他当成自动序列化的字典

    序列化数据:

    ##################################

    变量名 = shelve.open('文件名')

    变量名[字典key值] = key值对应的内容

    变量名.close()

    #####################################

    反序列化数据:

    #####################################

    变量名 = shelve.open('文件名')

    print(变量名.get('key值'))

    configparser模块:

    configparser是什么?

    配置文件解析模块

    什么是配置文件?

    用于提供程序运行所需要的一些信息的文件(后缀:ini,cfg)方便用户更改

    配置文件内容格式:

    只包括两种元素:section分区,option选项(一个文件可以有多个section,一个section可以有多个option)

    核心功能:

    获取所有分区.section()

    获取所有选项.option()

    获取一个之.get()

    查看配置文件内容

    ################################

    cfg = configparser.ConfigParser()

    cfg.read(文件名,enconding='utf-8')

    查找分区中的所有分区

    print(cfg.sections())

    查找分区中的所有选项

    print(cfg.option(分区名))

    查找分区中的一个选项的值

    print(cfg.get(分区名,选项名))

    #################################

    修改配置文件的值

    #################################

    cfg.read(文件名)

    cfg.set(分区名,选项名,修改后的值)

    cfg.write(open(文件名,打开文件方式,字符编码选择))

    #################################

    hashlib模块:

    什么是hashlib?

    散列函数

    用于将任意长度的数据,压缩到一段固定长度的字符(提取特征)

    hash的特征:

    1、输入数据不同,得到的hash值可能相同

    2、不能通过hash值来得到输入的值

    3、如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同

    因为以上特点常将hash算法用于加密和文件校验

    破解MD5可以尝试撞库(原理里面存了明文和密文的对应关系)

    XML模块:

    import xml
    # 什么是XML
    # 可扩展标记语言(标记指的是代表某种含义的字符)
    # 为什么需要xml?
    # 为了能够在不同的平台间继续数据的交换。
    # 为了使交换的数据让对方看懂,就需要按照一定的语法规范来写

    # XML语法格式:
    # 1、任何的起始标签必须有一个结束标签
    # 2、可以采用另一种简化方式,可以在一个标签中间时表示起始标签和结束标签。
    # 3、标签嵌套
    # 4、所有特性必须有值
    # 5、所有的特性必须在值的周围加上双引号
    import xml.etree.ElementTree as et
    # 找到文件
    tree = et.parse('a.xml')
    # 找到根标签
    root = tree.getroot()
    # 三种查找结点的方式
    # 在整个树中进行查找,而且查找到所有
    res = root.iter('rank')
    for i in res :
    print(i.tag)
    print('*'*50)
    print(i.attrib)
    print('*' * 50)
    print(i.text)

    # find只能在当前元素的下一级开始查找,并且只找到一个就结束
    res = root.find('country')
    print(res)
    print(res.tag)
    print(res.attrib)
    print(res.text)
    nh = res.find('neighbor')
    print(nh.attrib)

    # find只能在当前元素的下一级开始查找,并且找到所有。
    cy = root.findall('country')
    print([i.attrib for i in cy])


    # ======================================改
    import xml.etree.ElementTree as et
    tree = et.parse('a.xml')
    root=tree.getroot()

    for i in root.iter('year'):
    i.text =str(int(i.text)+10)
    i.attrib = {'updated':'yes'}
    tree.write('b.xml')


    # ======================================增
    import xml.etree.ElementTree as et
    tree = et.parse('a.xml')
    root = tree.getroot()

    for country in root.iter('country'):
    year = country.find('year')
    if int(year.text) > 2010:
    print(country.attrib)
    ele = et.Element('yxf')
    ele.attrib = {'nb':'true'}
    ele.text = '厉害'
    country.append(ele)
    tree.write('b.xml')

    # ======================================增
    import xml.etree.ElementTree as et
    tree = et.parse('a.xml')
    root = tree.getroot()

    for i in root.iter('country'):
    year = i.find('year')
    if int(year.text)>2010:
    i.remove(year)
    tree.write('b.xml')
  • 相关阅读:
    机器学习到深度学习资料
    安装CentOS 6停在selinux-policy-targeted卡住的问题解决
    U盘安装Ubuntu 16.04出现:Failed to load ldlinux.c32
    Ubuntu 16.04下使用UNetbootin制作的ISO镜像为U盘启动出现:Missing Operating System (mbr.bin)
    为什么Linux的Fdisk分区时First Sector为2048?
    Windows下将ISO镜像制作成U盘启动的工具(U盘启动工具/UltraISO/Rufus/Universal-USB)
    CentOS 6.9安装类型选择(Basic Server/Web Server)
    Java中String与byte[]的转换
    IntelliJ IDEA插件-翻译插件
    Mycat查询时出现:Error Code: 1064. can't find any valid datanode
  • 原文地址:https://www.cnblogs.com/yaoxiaofeng/p/9468691.html
Copyright © 2020-2023  润新知