Python入门学习 DAY19 (shelve,xml,configparser,hashlib)模块

Python入门     

DAY 19

今日内容:shelve模块,xml模块,configparser模块,hashlib模块

1.shelve(一个字典对象模块  自动序列化)

    什么是shelve模块
        也是一种序列化方式
    使用方法
        1.opne
        2.读写
        3.close
    特点:使用方法比较简单 提供一个文件名字就可以开始读写
         读写的方法和字典一致
         你可以把它当成带有自动序列化功能的字典
    原理: 内部使用的就是pickle   所以 也存在跨平台性差的问题  你自己存的只有你自己知道怎么取

    用途:写单机程序时可以考虑

import shelve
# 序列化
sl = shelve.open("shelvetest.txt")
sl["date"] = "8-13"
sl["list1"] = ["123","456"]
sl.close()

# 反序列化
s2 = shelve.open("shelvetest.txt")
print(s2.get("list1"))
s2.close()


2.xml(可扩展标记语言)
    是一个文件格式
    写配置文件或数据交换
为什么需要XML?
        为能够在不同的平台间继续数据的交换
        为了使交换的数据能让对方看懂 因此需要按照一定的语法规范来书写

XML语法格式:
        任何的起始标签都必须有一个结束标签。

        可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/)

        标签必须按合适的顺序进行嵌套

        所有的特性都必须有值,都必须在值的周围加上双引号。
 注意:最外层有且只有一个标签 这个标签称之为根标签
              第一行应该有文档声明 用于高速计算机怎么理解
              例如:<?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 一个标签


3.configparser( 配置文件解析模块)
    用来解析 读写 配置文件
    内容: section  option

什么是配置文件?
            用于提供程序运行所需要的一些信息的文件   后缀 ini cfg
用途:方便用户修改

配置文件内容格式
        只包括两种元素
        section  分区
        option   选项
        一个文件可以有多个section
        一个section可以有多个选项

核心功能
    1.sections 获取所有分区
    2.options  获取所有选项
    3.get      获取一个值     传入 section  option

    注意:大小写不敏感
 

4.hashlib
        hash是什么?
            是一种算法
            用于将任意长度的数据,压缩映射到一段固定长度的字符 (提取特征)
           

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

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

            加密的方式有很多
            常用的MD5就是一种hash算法
            常用的提升安全性的手段 就是加盐
            就是把你加密前的数据做一些改动 例如 把顺序反过来

列:

import hashlib
md = hashlib.md5()
md.update("hello".encode("utf-8"))
print(md.hexdigest())


# 破解MD5可以尝试撞库   原理: 有一个数据库 里面存放了常见的明文和密文的对应关系 ,
# 所以我可以拿着一个密文取数据库中查找 有没有已经存在的明文  如果有撞库成功  能不能破解凭运气
# 假设我已经拿到了一个众多账号中的一个密码  我可以那这个密码 挨个测试你的所有账号  可能不能碰到运气
pwd_dic = {"123456":"e10adc3949ba59abbe56e057f20f883e","hello":"5d41402abc4b2a76b9719d911017c592"}
for i in pwd_dic:
    if pwd_dic[i] == "5d41402abc4b2a76b9719d911017c592":
        print(i)

以上为本次学习内容

猜你喜欢

转载自blog.csdn.net/sql121407/article/details/81636867