常用模块(三)

一、shelve模块

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

2、特点:

   只要提供一个文件名即可

   读写的方式和字典一样

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

3、应用场景

  在单击的程序中使用

4、使用方法

(1)序列化

 import shelve

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

(2)反序列化

 import shelve

 s2 = shelve.open('a.txt')     # 打开文件
print(s2.get('week'))
print(s2.get('person'))
print(s2.get('person')['age']) # 读取文件中内容
s2.close() # 关闭文件

二、xml模块

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

2、为什么要用xml 

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

3、语法格式

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

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

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

 <tag1>
  <tag2>
    <tag3>
    </tag3>
  </tag2>
</tag1>

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

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

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

4、注意点

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

  

 <person>
<sut1>
</stu1>
<sut2>
</stu2>
</person>

标签嵌套

5、使用场景:

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

6、方法及属性

(1).ElementTree 表示整个文件的元素树
(2.)Element 表示一个节点
a.属性
text 开始标签和结束标签中间的文本
attrib 所有的属性 字典类型
tag 标签的名字
b.方法
get 获取某个属性的值
 import xml.etree.ElementTree as et

 # 读取xml文档到内存中  得到一个包含所有数据的节点树
# 每一个标签就称之为一个节点 或 元素
tree = et.parse("text.xml") # 获取根标签
root = tree.getroot() # 获取所有的country
print(root.find("country")) # 找的是第一个
print(root.findall("country")) # 找的是所有 # 获取字标签
print(root.iter("country"))
for i in root.iter("country"):
print(i) # 遍历整个xml
for country in root:
print(country.tag,country.attrib,country.text)
for t in country:
print(t.tag, t.attrib, t.text) print(root.find("country").get("name"))

遍历

7、增删改查

1.解析XML
查找标签
find 在子标签中获取名字匹配第一个
findall 在子标签中获取名字匹配的所有标签
iter(tagname) 在全文中查找[匹配的所有标签 返回一个迭代器 2.生成XML
用ElmentTree
parse() 解析一个文件
getroot() 获取根标签
write() 写入到文件 3.修改xml
set 一个属性
remove 一个标签
append 一个标签
 # 读取到内存
tree = et.parse("text.xml")
for country in tree.findall("country"):
yeartag = country.find("year")
yeartag.text = str(int(yeartag.text) + 1) 修改标签文本 country.remove(country.find("year")) 删除标签 # 添加子标签
newtag = et.Element("newTag")
# 文本
newtag.text = ""
#属性
newtag.attrib["name"] = "DSB"
#添加
country.append(newtag) # 写回到内存
tree.write("text.xml",encoding="utf-8",xml_declaration=False)

增删改查

8、生成xml文档

 import xml.etree.ElementTree as et
# 创建根标签
root = et.Element("root")
# 创建节点树
t1 = et.ElementTree(root) # 加一个peron标签
persson = et.Element("person")
persson.attrib["name"] = "yyh"
persson.attrib["sex"] = "man"
persson.attrib["age"] = ""
persson.text = "这是一个person标签" root.append(persson) # 写入文件
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加密

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

加密

3、解密

破解MD5可以尝试撞库

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

四、configparser模块

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

2、配置文件内容格式

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

3、核心方法

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

4、配置文件

 import configparser

 # 得到配置文件对象
cfg = configparser.ConfigParser() # 读取一个配置文件
cfg.read("download.ini") print(cfg.sections())
print(cfg.options("section1")) print((cfg.get("section1","maxspeed")))
print((cfg.getint("section1","maxspeed")))
print(cfg.getint("section2","minspeed")) # 修改最大速度为2048
cfg.set("section1","maxspeed","") # 修改后写入文件
cfg.write(open("download.ini","w",encoding="utf-8"))

配置文件

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

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

    1.tiim模块,因为方法较多我就写在code里面了,后面有注释 #!/usr/bin/env python #_*_coding:utf-8_*_ print("time".ce ...

  2. 19 模块之shelve xml haslib configparser

    shelve 什么是shelve模块 也是一种序列化方式使用方法 1.opne 2.读写 3.close特点:使用方法比较简单 提供一个文件名字就可以开始读写 读写的方法和字典一致 你可以把它当成带有 ...

  3. python模块之shelve,xml,hashlib,configpaser

    shelve shelve模块也是一种可以将数据序列化的模块 使用方法 1. open 2. 读写 3. close 特点:使用方法比较简单 提供一个文件名字就可以开始读写,读写的方法和字典一致;跨平 ...

  4. Python3入门(十三)——常用内置模块之摘要模块hashlib/hmac

    (1)hashlib hashlib提供了常见摘要算法:如MD5,SHA1等等 一个md5的加密示例如下: import hashlib m = hashlib.md5() m.update(&quo ...

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

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  6. Python模块 shelve xml configparser hashlib

    常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...

  7. 常用模块之 shutil,json,pickle,shelve,xml,configparser

    shutil 高级的文件.文件夹.压缩包 处理模块 shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中 import shutil shut ...

  8. Python常用内置模块之xml模块

    xml即可扩展标记语言,它可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.从结构上,很像HTML超文本标记语言.但他们被设计的目的是不同的,超文本标记语言被设计用来显示 ...

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

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

  10. 常用模块(hashlib,configparser,logging)

    常用模块(hashlib,configparser,logging) hashlib hashlib 摘要算法的模块md5 sha1 sha256 sha512摘要的过程 不可逆能做的事:文件的一致性 ...

随机推荐

  1. 77、tensorflow手写识别基础版本

    ''' Created on 2017年4月20日 @author: weizhen ''' #手写识别 from tensorflow.examples.tutorials.mnist import ...

  2. 54、tensorflow手写识别的高级版本

    ''' Created on 2017年3月4日 @author: weizhen ''' import tensorflow as tf def weight_variable(shape): in ...

  3. HTTP 请求及响应 (转)

    HTTP请求 4.1.HTTP请求包括的内容 客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求. 一个完整的HTTP请求包括如下内容:一个请求行.若干消息头. ...

  4. JS轻松实现单击文本框弹出选择日期

    我的开发工具是vs2005,你们可选择自己合适的开发工具 首先创建个文本框<input id="txFDate" name="txFDate" type= ...

  5. vue - blog开发学习2

    首页博客列表的开发 1.修改index.vue,使能够支持列表功能 <template> <div> <PostList v-for="(item,index) ...

  6. Octave的安装

    本文是参考吴恩达老师的深度学习视频而做的笔记 深度学习 引言 挑战:AI真正的挑战在于解决那些对人类来说很容易执行,但很难形式化描述的问题,比如识别人们所说的话/图像中的脸/分辨苹果和梨. 解决方案: ...

  7. opensns功能详解

    <!DOCTYPE html> opensns功能详解 wmd-preview h1 { color: #0077bb; /* 将标题改为蓝色 */ } opensns功能详解 软件工程 ...

  8. Spring事务管理-传播行为-隔离级别

    事务是逻辑上的一组操作,这组操作要么全部成功,要么全部失败. 事务的特性:ACID 原子性:事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生 一致性:事务前后数据的完整性约束保持一致 ...

  9. Eclipse导入的Maven项目没有Build Path

    我导入的是 Signal-Server项目到 Eclipse中,发现 src 文件夹上面没有#号,包视图和语法提示都没有 ~~ 解决方法: 修改 Project Facets 在 项目右键 -> ...

  10. mongodb4.0数据库权限配置

    今天给大家分享一个关于mongodb数据库权限配置的小知识点,这里呢,我用的是mongodb4.0版本,下载地址:https://www.mongodb.com/download-center/com ...