zoukankan      html  css  js  c++  java
  • 学习日记0813常用模块configparser,shelve,hashlib,xml

    configparser模块

      什么是configparser模块

        用于解析配置文件 后缀为 ini或者cfg

      怎么用configparser模块

        查看配置文件中的内容

    1 import configparser
    2     cfg = configparser.ConferParser()
    3     cfg.read('文件路径',encoding='utf-8')
    4     print(cfg.sections())
    5     print(cfg.options('section名'))

        修改配置文件中的内容

     import configparser
         cfg = configparser.ConferParser()
         cfg.read('文件路径',encoding='utf-8')
        cfg.set('sections','options','修改的内容')
        cfg.write(open('文件路径','w',encoding='utf-8'))

    shelve模块

      什么是shelve模块

        shelve也是系列化的一种,他内置就是picker模块

        它的存储成的格式为字典形式

      怎么使用shelve模块

        序列化

    import shelve
        sh = shelve.open('文件路径')
        sh['name'] = 'beard'
        sh.close()

        反序列化

    import shelve
        sh = shelve.open('文件路径')
        print(sh.get('name'))
        sh.close

    hashlib模块

      什么是hash模块

        hash是一种加密的方式,它会将任意长度的数据加密成一个固定长度的数据

        常用的hash加密方式是MD5

      hash的特点:
        1.输入数据不同,得到的hash值有可能相同
        2.不能通过hash值来得到输入的值
        3.如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同

      在python中使用hashlib加密数据

    import hashlib
        md = hashlib.md5()
        md.update('加密的数据')
        sj = md.hexdigest()
        print(sj)

    xml模块

    xml全称:可扩展标记语言

      xml与json数据相似,都是用于序列化数据,和在不同的平台间传递数据的

       该语言的语法特点是

        1 xml使用标签的形式,每一个标签都必须成对出现

          <123></123>

          <123/>简化的写法

        2 标签必须顺序的嵌套

          <123>

            <456>

            </456>

          </123>

        3 特征必须都有值

          <123 name="456"/>

        4 必须使用的是""

      使用场景:

        1 配置文件

        2 不同平台间的数据交换

      在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
        root = et.Element('root')
        tl = et.ElementTree(root)
        persson = et.Element('persson')
        persson.attrib['name1'] = '属性一'
        persson.attrib['name2'] = '属性二'
        persson.text = '这是一个标签'
        root.append(persson)
        tl.write('文件路径',encoding='utf-8',xml_declaration=True)

    查看xml中的内容:

    import xml.etree.ElementTree as et
        tree = et.parser('文件路径')
        root = tree.getroot()
        for i in root:
            print(i.text,i.tag,i.attrib)

    在xml中添加内容,建立新的xml文件,删除内容,修改内容:

    import xml.etree.ElementTree as et
    # #先生成一个根标签
    # root = et.Element('根标签')
    # #再生成一个节点树
    # tl = et.ElementTree(root)
    # #再添加一个persson标签
    # persson = et.Element('persson标签')
    # #再设置persson标签的属性
    # persson.attrib['name1'] = '属性一'
    # persson.attrib['name2'] = '属性二'
    # #再设置persson的内容
    # persson.text = '标签的内容'
    # root.append(persson)
    # # 最后再写入文件
    # tl.write('lx.xml',encoding='utf-8',xml_declaration=True)
    # #xml_declaration是否生成文件头
    #将文件读入内存
    tree = et.parse('lx.xml')
    #获得根标签
    root =tree.getroot()
    # persson = root.find('persson标签2')
    # persson.text = str(persson.text+'123')    #修改文件
    # root.remove(persson)#删除标签
    new_persson = et.Element('persson标签3')
    new_persson.attrib['age'] = '123'
    new_persson.text = '123'
    root.append(new_persson)
    tree.write('lx.xml',encoding='utf-8',xml_declaration=True)

     hmac

    import hmac
    h = hmac.new("121212".encode("utf-8"))
    h.update("abcd".encode("utf-8"))
    print(h.hexdigest())
  • 相关阅读:
    thread_Semaphore信号量
    c 语言文本文件判断是否到达结尾的问题
    c语言快速排序算法(转)
    c语言双向循环链表
    gtk+学习笔记(八)
    c语言循环链表的问题
    linux c获取本地时间
    gtk+学习笔记(七)
    gtk+学习笔记(六)
    gtk+学习笔记(五)
  • 原文地址:https://www.cnblogs.com/jianhaozhou/p/9469689.html
Copyright © 2011-2022 走看看