常用模块
1. shelve
一个字典对象模块 自动序列化
2.xml
是一个文件格式
写配置文件或数据交换
<a name="hades">123</a>
3. configparser
用来解析 读写 配置文件
内容:section option
4. hashlib
里面有一对hash算法 常用的是MD5
5. subprocess
6. re shelve模块
什么是shelve模块:
也是一种序列化方式
使用方法:
1. open
2. 读写
3. close
特点: 使用方法比较简单,提供一个文件名就可以开始读写
读写的方法和字典一致
可以把它当成带有自动序列化功能的字典
原理: 内部使用的就是pickle (跨平台性差,自己存的只有自己知道怎么取)
什么时候用: 写一个单机程序时可以考虑
 import shelve
#序列化
s1 = shelve.open('shelvetest')
s1['date'] = '8-13'
s1['list1'] = [1,2,3,4,5]
s1.close()
#反序列化
s2 = shelve.open('shelvetest')
print(s2.get('date'))
s2.close()

XML模块
什么XML: 全称可扩展标记语言
      标记指的是代表某种含义的字符 XML<> 为什么需要XML:
    为能够在不同的平台间继续数据的交换
    为了使交换的数据能让对方看懂 就需要按照一定的语法规范来书写 XML语法格式:
一、任何的起始标签都必须有一个结束标签。
<tagname></tagname>
二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<百度百科词条/>。XML解析器会将其翻译成<百度百科词条></百度百科词条>。
<tagname/> 简化写法
三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,例如这是一串百度百科中的样例字符串。这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不能关闭外面的括号的。
关闭标签应该从内往外 一层一层关闭 顺序不能乱
<tag1>
<tag2>
</tag2>
</tag1>
四、所有的特性都必须有值。
  特性指的是属性
<person name="egon"></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() 在全文中查找匹配的所有标签,返回一个迭代器   2.生成XML
  用ElmentTrue
  parse 解析一个文件
  getroot() 获取根标签
  write() 写入到文件   3.修改xml
  set 一个属性
  remove 一个标签
  append 一个标签 configparser模块
configparser 是什么? 配置文件解析模块
什么是配置文件?
用于提供程序允许所需要的一些信息的文件
后缀 ini cfg
有什么用?
方便用户修改 例如: 超时时间
配置文件内容格式
只包括两种元素
section 部分 区域 分区,被中括号括起来的
option 选项
一个文件可以有多个section
一个section可以有多个选项 核心功能:
1. sections 获取所有分区
2. options 获取所有选项
3. get 获取一个值 传入 section option
注意: 大小写不敏感 假装做一个下载功能,最大链接速度可以由用户来控制,用户不会看代码,所以提供一个配置文件
 import configparser
#得到配置文件对象
cfg = configparser.ConfigParser()
#读取一个配置文件
cfg.read("download.ini")
print(cfg.sections())
print(cfg.options("section1"))
print(cfg.get("section1","maxSpeed"))
print(cfg.get("section2","minspeed"))
#修改最大速度为2048
cfg.get("section1","maxSpeed","")
cfg.write(open("download.ini", "w", encoding='utf-8'))

hashlib模块
hash是什么?
是一种算法
用于将任意长度的数据,压缩映射到一段固定长度的字符(提取特征) hash的特点:
  1.输入数据不同,得到的hash值有可能相同
  2.不能通过hash值来得到输入的值
  3.如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同
  因为以上特点常将hash算法用于加密和文件效验
  输入用户名和密码 在代码中与数据库中的判断是否相同
  思考 当你的数据需要在网络中传递时,就可能会受到网络攻击
  黑客通过抓包工具就能截获你发送和接收的数据
  所以你的数据如果涉及到隐私,就应该加密   加密的方式有很多
  常用的MD5就是一种hash算法
  常用的提升安全性手段就是加盐
 import hashlib
md = hashlib.md5()
md.update(''.encode('utf-8'))
print(md.hexdigest())
pwd_dic = {"":"e10adc3949ba59abbe56e057f20f883e"}
for i in pwd_dic:
if pwd_dic[i] == "e10adc3949ba59abbe56e057f20f883e":
print(i)

  破解MD5可以尝试撞库  原理: 有一个数据库,里面存放了常见的明文和密文的对应关系,
  所以我可以拿着一个密文取数据库中查找,有没有已经存在的明文,如果有撞库成功,能不能破解凭运气   今后在写一些需要网络传输的程序时,如果要进行加密,最好把加密的算法复杂化
 import hashlib
pwd = 'abcdef'
pwd = "abc"+pwd+"cba"
md2 = hashlib.md5()
md2.update(pwd.encode("utf-8"))
print(md2.hexdigest())
hmac模块
 import hmac
h = hmac.new("".encode("utf-8"))
h.update("hades".encode("utf-8"))
print(h.hexdigest())

												

Python模块 shelve xml configparser hashlib的更多相关文章

  1. python模块(shelve,xml,configparser,hashlib,logging)

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

  2. json/pickle/shelve/xml/configparser/hashlib/subprocess - 总结

    序列化:序列化指把内存里的数据类型转成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes为什么要序列化:可以直接把内存数据(eg:10个列表,3个嵌套字典)存到硬盘 ...

  3. python笔记-7(shutil/json/pickle/shelve/xml/configparser/hashlib模块)

    一.shutil模块--高级的文件.文件夹.压缩包处理模块 1.通过句柄复制内容 shutil.copyfileobj(f1,f2)对文件的复制(通过句柄fdst/fsrc复制文件内容) 源码: Le ...

  4. 8.2、常用模块介绍2:xml,configparser,hashlib

    xml: 介绍:包含关于可扩展标记语言xml的函数 使用: python有三种方法解析XML--SAX,DOM,以及ElementTree,由于xml技术落后,所以这里不对sax,dom介绍: xml ...

  5. 模块 - json/pickle/shelve/xml/configparser

    序列化: 序列化是指把内存里的数据类型转变成字符串,以使其能存储到硬盘或通过网络传输到远程,因为硬盘或网络传输时只能接受bytes. 为什么要序列化: 有种办法可以直接把内存数据(eg:10个列表,3 ...

  6. python模块:xml

    """Core XML support for Python. This package contains four sub-packages: dom -- The W ...

  7. python3之xml&ConfigParser&hashlib&Subprocess&logging模块

    1.xml模块 XML 指可扩展标记语言(eXtensible Markup Language),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. XML 被设计用来传输和存储 ...

  8. python模块 os&sys&subprocess&hashlib模块

    os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...

  9. python模块之xml

    xml模块 xml结构 xml是种实现不同语言或程序之间进行数据交换的协议,跟json差不多,但没json使用简单.但是因为历史遗留问题,至今很多行业依然使用xml这种数据格式. xml的格式如下,是 ...

随机推荐

  1. 设计模式-COMMOND PATTERN (ACTIVE OBJECT PATTERN是一种特殊的COMMOND PATTERN)

    复用控制逻辑. 理解方式:Controller 获取到Light TeleVision Computer中的一个的对像,通过Icommond接口作用于它. ACTIVE OBJECT模式: class ...

  2. macbook pro上安装vmware虚拟机

    http://xclient.info/s/vmware-fusion.html?_=84739015bcde24a4cc7a744d2d5f748b https://docs.vmware.com/ ...

  3. Java中的流(1)流简介

    简介 1.在java中stream代表一种数据流(源),java.io的底层数据元.(比作成水管)2.InputStream 比作进水管,水从里面流向你,你要接收,read3.OutputStream ...

  4. 窗口Dialog

    Dialog是窗口的意思,它是Window的子类.与frame相比,frame是我们大的窗口,而dialog便是那种弹出来和你说话的对话框. Dialog类的默认布局是BorderLayout Dia ...

  5. 473 Matchsticks to Square 火柴拼正方形

    还记得童话<卖火柴的小女孩>吗?现在,你知道小女孩有多少根火柴,请找出一种能使用所有火柴拼成一个正方形的方法.不能折断火柴,可以把火柴连接起来,并且每根火柴都要用到.输入为小女孩拥有火柴的 ...

  6. POI导出时,将指定的列设置为下拉列表

    本示例设置第2列为下拉框(下拉框内容为:是/否),从第5行开始到5657行结束. 关键代码示例: ComboxList = new String[]{"是","否&quo ...

  7. 学习笔记 第八章 使用CSS美化列表

    第8章  使用CSS美化列表 8.1 列表的基本结构 在HTML中,列表结构可以分为两种基本类型:有序列表和无序列表.使用标签如下: <ul>...</ul>:标识无序列表: ...

  8. 转载:如何使用RFT自动打开IE

    如何在RFT测试脚本中打开IE浏览器?   第一步,配置应用程序进行测试: “配置”菜单 ——> “配置应用程序进行测试...”,进入下面这个界面,默认三个自带的应用程序,点击“添加”加入IE. ...

  9. 怎么学好XXX

    怎么学好数据库是一个比较大题目,数据库不仅仅是写SQL那么简单,即使知道了SQL怎么写,还需要很清楚的知道这条SQL他大概扫描了多少数据,返回多少数据,是否需要创建索引.至于SQL优化是一个比较专业的 ...

  10. iOS---iOS中SQLite的使用

    一.SQLite的使用 采用SQLite数据库来存储数据.SQLite作为一中小型数据库,应用ios中,跟前三种保存方式相比,相对比较复杂一些.还是一步步来吧! 第一步:导入头文件 需要添加SQLit ...