常用模块(三)——shelve、xml、hashlib、configparser

常用模块(三)

一、shelve模块

1、shelve模块也是一种序列化模块,内部使用的是pickle模块,所以也存在跨平台性差的问题

2、特点:

   只要提供一个文件名即可

   读写的方式和字典一样

   将数据以类似字典的形式在文件中读写

3、应用场景

  在单击的程序中使用

4、使用方法

(1)序列化

1 import shelve
2
3 s1= shelve.open(‘a.txt‘)      # 打开文件
4 s1[‘week‘]=["Sun", "Mon", "Tues", "Wed", "Thur", "Fri", "Sat"]
5 s1[‘person‘]={"name": "Zero", "age": 8, "height": 180}     # 写操作
6 s1.close()     # 关闭文件

(2)反序列化

1 import shelve
2
3 s2 = shelve.open(‘a.txt‘)     # 打开文件
4 print(s2.get(‘week‘))
5 print(s2.get(‘person‘))
6 print(s2.get(‘person‘)[‘age‘])    # 读取文件中内容
7 s2.close()        # 关闭文件

二、xml模块

1、XML全称:可扩展标记语言,标记指的是代表某种含义的字符 XML<>

2、为什么要用xml 

 (1)为能够在不同的平台间继续数据的交换
 (2)为了使交换的数据能让对方看懂,就需要按照一定的语法规范来书写

3、语法格式

(1)任何的起始标签都必须有一个结束标签。
  <tagname></tagname>
  <tagname></tagname>
  <tagname/> 简化写法

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

    例如<ABC/>:XML解析器会将其翻译成<ABC></ABC>。
(3)标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签,这好比是将起始和结束标签看作是数学中的左右括号:在没有关闭所有的内部括号之前,是不            能关闭外面的括号的。

1 <tag1>
2   <tag2>
3     <tag3>
4     </tag3>
5   </tag2>
6 </tag1> 

(4)所有的特性都必须有值。
  特性指的是属性

1 <person name="aaa">
2 </person>

(5)所有的特性都必须在值的周围加上双引号。

4、注意点

(1)最外层有且只有一个标签,这个标签为根标签
(2)第一行应该有文档声明,用于高速计算机怎么理解
  例如:<?xml version="1.0" encoding="utf-8"?>

  

1 <person>
2     <sut1>
3     </stu1>
4     <sut2>
5     </stu2>
6 </person>

标签嵌套

5、使用场景:

(1)配置文件
(2)常规的数据交换。 例如从服务器获取一段新闻

6、方法及属性

(1).ElementTree 表示整个文件的元素树
(2.)Element 表示一个节点
 a.属性
     text      开始标签和结束标签中间的文本
     attrib    所有的属性     字典类型
     tag       标签的名字
 b.方法
    get 获取某个属性的值
            1.解析XML
                查找标签
                find      在子标签中获取名字匹配第一个
                findall   在子标签中获取名字匹配的所有标签
                iter(tagname) 在全文中查找[匹配的所有标签 返回一个迭代器
            2.生成XML
                用ElmentTree
                parse()  解析一个文件
                getroot() 获取根标签
                write()  写入到文件
            3.修改xml
                set 一个属性
                remove 一个标签
                append 一个标签

 1 import xml.etree.ElementTree as et
 2
 3 # 读取xml文档到内存中  得到一个包含所有数据的节点树
 4 # 每一个标签就称之为一个节点 或 元素
 5 tree = et.parse("text.xml")
 6
 7 # 获取根标签
 8 root = tree.getroot()
 9
10 # 获取所有的country
11 print(root.find("country"))   # 找的是第一个
12 print(root.findall("country"))   # 找的是所有
13
14 # 获取字标签
15 print(root.iter("country"))
16 for i in root.iter("country"):
17     print(i)
18
19 # 遍历整个xml
20 for country in root:
21      print(country.tag,country.attrib,country.text)
22         for t in country:
23               print(t.tag, t.attrib, t.text)
24
25 print(root.find("country").get("name"))    

遍历

7、增删改查

1.解析XML
    查找标签
    find      在子标签中获取名字匹配第一个
    findall   在子标签中获取名字匹配的所有标签
    iter(tagname)      在全文中查找[匹配的所有标签 返回一个迭代器

2.生成XML
    用ElmentTree
    parse()  解析一个文件
    getroot() 获取根标签
    write()  写入到文件

3.修改xml
    set 一个属性
    remove 一个标签
    append 一个标签

 1 # 读取到内存
 2 tree = et.parse("text.xml")
 3 for country in tree.findall("country"):
 4      yeartag = country.find("year")
 5      yeartag.text = str(int(yeartag.text) + 1)   修改标签文本
 6
 7      country.remove(country.find("year"))     删除标签
 8
 9     # 添加子标签
10     newtag = et.Element("newTag")
11     # 文本
12     newtag.text = "123"
13     #属性
14     newtag.attrib["name"] = "DSB"
15     #添加
16     country.append(newtag)
17
18 # 写回到内存
19 tree.write("text.xml",encoding="utf-8",xml_declaration=False)

增删改查

8、生成xml文档

 1 import xml.etree.ElementTree as et
 2 # 创建根标签
 3 root = et.Element("root")
 4 # 创建节点树
 5 t1 = et.ElementTree(root)
 6
 7 # 加一个peron标签
 8 persson = et.Element("person")
 9 persson.attrib["name"] = "yyh"
10 persson.attrib["sex"] = "man"
11 persson.attrib["age"] = "20"
12 persson.text = "这是一个person标签"
13
14 root.append(persson)
15
16 # 写入文件
17 t1.write("newXML.xml",encoding="utf-8",xml_declaration=True)

生成

三、hashlib模块

1、hashlib分为hash和library

(1)hash

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

②.特点

a.输入数据不同,得到的hash值有可能相同
b.不能通过hash值来得到输入的值
c.如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同

③.作用

常用的提升安全性的手段,用于数据的加密,MD5是常用的一种hash算法

(2)library

2、利用hashlib加密

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

加密

3、解密

破解MD5可以尝试撞库

原理: 有一个数据库里面存放了常见的明文和密文的对应关系

四、configparser模块

1、configparser模块是配置文件解析模块,用于提供程序运行所需要的一些信息的文件。 后缀 .ini,.cfg

2、配置文件内容格式

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

3、核心方法

sections()     获取所有分区
options()      获取所有选项
get(section,option)            获取一个值

4、配置文件

 1 import configparser
 2
 3 # 得到配置文件对象
 4 cfg = configparser.ConfigParser()
 5
 6 # 读取一个配置文件
 7 cfg.read("download.ini")
 8
 9 print(cfg.sections())
10 print(cfg.options("section1"))
11
12 print((cfg.get("section1","maxspeed")))
13 print((cfg.getint("section1","maxspeed")))
14 print(cfg.getint("section2","minspeed"))
15
16
17 # 修改最大速度为2048
18 cfg.set("section1","maxspeed","2048")
19
20 # 修改后写入文件
21 cfg.write(open("download.ini","w",encoding="utf-8"))

配置文件

原文地址:https://www.cnblogs.com/linagcheng/p/9469692.html

时间: 2024-09-30 16:13:40

常用模块(三)——shelve、xml、hashlib、configparser的相关文章

python学习道路(day6note)(time &amp;datetime,random,shutil,shelve,xml处理,configparser,hashlib,logging模块,re正则表达式)

1.tiim模块,因为方法较多我就写在code里面了,后面有注释 1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 print("time".center(60,"-")) 5 print(time.asctime()) #返回字符串格式 外国的时间 6 #Fri Nov 18 11:25:08 2016 7 t = time.localtime() #本地时间 8 #print(t) #这是一个对象所以需要 9 p

python全栈开发【第十一篇】Python常用模块三(hashlib,configparser,logging)

hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示). 注意:摘要算法不是一个解密算法.(摘要算法,检测一个字符串是否发生了变化) 应涂:1.做文件校验 2.登录密码 密码不能解密,但可以撞库,用'加盐'的方法就可以解决撞库的问题.所有以后设置密码的时候要设置的复杂一点. #用户密码 import hashlib # md5

python常用模块(random,hashlib,os,sys)

random random模块用于获取随机数,一下random模块中常用的函数: # 返回 (0,1) ,float类型 random.random() # 返回 [1,3],int 类型 random.randint(1, 3) # 返回 [1,3),int 类型 random.randrange(1, 3) # 随机获取列表中的一个元素 random.choice([3,4,5,2,1, 'kitty']) # 随机获取列表中的2个元素,以列表的形式返回 random.sample([3,4

第22天 常用模块三

介绍的模块 logginghashlib  模块一:logging 人生三问 什么是日志 对每天所发生的事情做的记录就是日志. 为什么要用日志 日志记录了我们程序每天发生了什么事情,这个对于我们程序的维护有很大的帮助.例如每天都会有同一个ip在尝试登陆我们的网站,如果我们没有日志就不会知道有这样一个现象发生,可能在多年之后程序就会被攻破,但是如果有了日志,我们就能即使的发现程序的异常,并及时的修复它. 怎么使用日志?预备知识:日志级别 1. debug 日常的调试信息 数字表示code为10 2

Python之常用模块(五)hashlib模块与collections模块

5.8 hashlib模块 hashlib模块简介:此模块有人称为摘要算法,也叫做加密算法,或者是哈希算法,散列算法等等,主要用于密码得加密.文件一致性校验 加密方式有:MD5.sha1.sha25.sha512数字越大,加密的方法越复杂,安全性越高,但是效率就会越慢. 普通加密 import hashlib md5 = hashlib.md5() md5.update('123456'.encode('utf-8')) # 必须是bytes类型才能够进行加密 print(md5.hexdige

python基础--常用模块与面向对象基础

1常用模块 1.1 xml xml是实现不同语言或程序之间进行数据交换的协议 xml的格式如下: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2008</year> <gdppc>141100</gdp

Python之常用模块(二)

shelve xml处理 configparser hashlib logging   shelve模块 shelve是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式 import shelve sw = shelve.open('shelve_test.pkl') # 创建shelve对象 name = ['13', '14', '145', 6] # 创建一个列表 dist_test = {"k1":"v1"

python之路5:常用模块

模块简介 time & datetime模块 random os sys shutil json & pickle shelve xml处理 configparser hashlib subprocess logging模块 re正则表达式 模块简介: 模块,是用一堆代码实现了某个功能的代码集合,n个.py文件组成的代码集合就称为模块. 模块分为三种: 自定义模块(自己手动编写的python代码文件) 内置标准模块(又称标准库) 开源模块 导入模块有以下几种方法: import modul

python 常用模块 time random os模块 sys模块 json &amp; pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,