• Python学习之路_day_18(常用模块2)


    常用模块

    1、XML

    2、shelve

    3、configparser

     

    1、什么是shelve模块:

    使用方法:

    1、open

    2、读写

    3、close

    特点:使用方法比较简单,提供一个文本文件名字就可以开始读写

          读写的方法和字典一致

          可以把当成带有自动序列化功能的字典

    原理:内部使用的就是pickle,所以,也存在跨中平台性差

          你自己寸的只有你自己知道怎么去取

    什么时候使用:写一个单机程序可以考虑

     

     shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型

     

    import shelve

     

    f=shelve.open(r'sheve.txt')

    # f['stu1_info']={'name':'egon','age':18,'hobby':['piao','smoking','drinking']}

    # f['stu2_info']={'name':'gangdan','age':53}

    # f['school_info']={'website':'http://www.pypy.org','city':'beijing'}

     

    print(f['stu1_info']['hobby'])

    f.close()

     

    2.XML模块

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融行业的很多系统的接口还主要是xml。

    xml的格式如下,就是通过<>节点来区别数据结构的:

     

    <?xml version="1.0"?>

    <data>

        <country name="Liechtenstein">

            <rank updated="yes">2</rank>

            <year>2008</year>

            <gdppc>141100</gdppc>

            <neighbor name="Austria" direction="E"/>

            <neighbor name="Switzerland" direction="W"/>

        </country>

        <country name="Singapore">

            <rank updated="yes">5</rank>

            <year>2011</year>

            <gdppc>59900</gdppc>

            <neighbor name="Malaysia" direction="N"/>

        </country>

        <country name="Panama">

            <rank updated="yes">69</rank>

            <year>2011</year>

            <gdppc>13600</gdppc>

            <neighbor name="Costa Rica" direction="W"/>

            <neighbor name="Colombia" direction="E"/>

        </country>

    </data>

     

    xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml:

    # print(root.iter('year')) #全文搜索

    # print(root.find('country')) #在root的子节点找,只找一个

    # print(root.findall('country')) #在root的子节点找,找所有

     

    3. configparser模块

    配置文件如下:

     

    # 注释1; 注释2

     

    [section1]

    k1 = v1

    k2:v2

    user=egon

    age=18

    is_admin=true

    salary=31
    [section2]

    k1 = v1

     

    读取

     

    import configparser

     

    config=configparser.ConfigParser()

    config.read('a.cfg')

    #查看所有的标题

    res=config.sections() #['section1', 'section2']print(res)

    #查看标题section1下所有key=value的key

    options=config.options('section1')print(options) #['k1', 'k2', 'user', 'age', 'is_admin', 'salary']

    #查看标题section1下所有key=value的(key,value)格式

    item_list=config.items('section1')print(item_list) #[('k1', 'v1'), ('k2', 'v2'), ('user', 'egon'), ('age', '18'), ('is_admin', 'true'), ('salary', '31')]

    #查看标题section1下user的值=>字符串格式

    val=config.get('section1','user')print(val) #egon

    #查看标题section1下age的值=>整数格式

    val1=config.getint('section1','age')print(val1) #18

    #查看标题section1下is_admin的值=>布尔值格式

    val2=config.getboolean('section1','is_admin')print(val2) #True

    #查看标题section1下salary的值=>浮点型格式

    val3=config.getfloat('section1','salary')print(val3) #31.0

     

    4. hashlib模块

    # 1、什么叫hash:hash是一种算法(3.x里代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法),该算法接受传入的内容,经过运算得到一串hash值

    # 2、hash值的特点是:

    #2.1 只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验

    #2.2 不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码

    #2.3 只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的

     hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()为工厂运送原材料),经过加工返回的产品就是hash值

     

  • 相关阅读:
    @SneakyThrows
    docker部署elasticsearch
    docker部署rabbitmq
    docker部署minio
    docker 部署 jenkins
    linux 根据文件名全局查找位置
    docker 容器与宿主机之间文件拷贝
    excel 查看当前单元格是否存在某一列
    机器学习sklearn
    一些博客链接
  • 原文地址:https://www.cnblogs.com/zjh009/p/9471603.html
Copyright © 2020-2023  润新知