shelve

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

代码示例:
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()

XML

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

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

XML语法格式(来自百度百科):
一、任何的起始标签都必须有一个结束标签。

<tagname></tagname>

<tagname/> 简化写法

二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<百度百科词条/>。
三、标签必须按合适的顺序进行嵌套,关闭标签应该从内往外 一层一层关闭 顺序不能乱
四、所有的属性都必须有值。
<person name="">
</person>
五、所有的属性都必须在值的周围加上双引号。
注意:最外层有且只有一个标签 这个标签称之为根标签,第一行应该有文档声明 用于告诉计算机怎么理解文档
例如:<?xml version="1.0" encoding="utf-8"?>
使用场景: 配置文件、常规的数据交换 例如从服务器获取一段新闻

与json的区别:
作用是一样的 都是一种数据格式
xml比json先诞生
json的数据比xml小
目前json是主流

python中的xml处理
ElmentTree 表示整个文件的元素树

Elment 表示一个节点

属性
1. text 开始标签和结束标签中间的文本
2. attrib 所有的属性 字典类型
3. tag 标签的名字

方法

get 获取某个属性的值

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

生成XML

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

修改xml

set 一个属性
remove 一个标签
append 一个标签

# 语法格式练习: 要求把你的同桌的手机信息用xml来描述
import xml.etree.ElementTree as et

# 读取xml文档到内存中 得到一个包含所有数据的节点树
# 每一个标签就称之为一个节点 或 元素
tree = et.parse("text.xml")
# 获取根标签
root = tree.getroot()
# 获取所有的country 找的是第一个
print(root.find("country"))
# 找的是所有
print(root.findall("country"))

# 获取year
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)

# 读取到内存
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 = "123"
#属性
newtag.attrib["name"] = "DSB"
#添加
country.append(newtag)

# 写回到内存
tree.write("text.xml",encoding="utf-8",xml_declaration=False)

hashlib

hashlib 是一个提供了一些流行的hash算法的 Python 标准库
其中所包括的算法有 md5, sha1, sha224, sha256, sha384, sha512. 另外,模块中所定义的 new(name, string=”) 方法可通过指定系统所支持的hash算法来构造相应的hash对象.
hash的特点:
1.输入数据不同,得到的hash值有可能相同
2.不能通过hash值来得到输入的值
3.如果算法相同,无论输入的数据长度是多少,得到的hash值长度相同

hashlib用法
from hashlib import md5# 导入模块

md5 = hashlib.md5() # 构造hash对象
md5.update('hello')#传入要hash的数据
md5.update('python')
m2 = hashlib.md5('hello python')
print (md5.hexdigest() == m2.hexdigest()) # 两种方式的效果相同

通常为防止密码被撞库破解,在传输密码时会使用加密算法,并会使用为密码加盐,增加密码被撞库破解的难度

from hashlib import md5

pwd = ‘123456’
md5 = hashlib.md5()
md5.update('hello,world') #加盐
md5.update(pwd)
print(md5. hexdigest())

configparser

configparser 是配置文件解析模块
什么是配置文件?
用于提供程序运行所需要的一些信息的文件 后缀 ini cfg
有什么用?
方便用户修改 例如超时时间

配置文件内容格式

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

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

注意:大小写不敏感

用法
import configparser #导入模块

conf = configparser.ConfigParser() #创建对象
conf.read('config.ini', encoding='utf-8') #读取配置文件信息,指定‘utf-8’
print(conf['sections']['options']) #取值
conf['sections']['options'] = 'new_config' #赋值、修改

conf.write(open('config.ini', 'w', encoding='utf-8')) #保存到原文件

python模块之shelve,xml,hashlib,configpaser的更多相关文章

  1. 19 模块之shelve xml haslib configparser

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

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

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

  3. python 模块之-shelve

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

  4. Python模块:configparser、hashlib、(subprocess)

    configparser模块: 此模块用于生成和修改常见配置文档. 一个常见配置文件(.ini的后缀名)格式如下: [DEFAULT] # DEFAULT 是指后面的字典里都会默认有的内容 Serve ...

  5. python模块:shelve

    shelve 1)模块功能:以 key - value 的方式存储数据. 2)写数据 >>> import shelve >>> db = shelve.open( ...

  6. Python模块之shelve

    shelve是python的自带model. 可以直接通过import shelve来引用. shelve类似于一个存储持久化对象的持久化字典,即字典文件. 使用方法也类似于字典. 保存对象至shel ...

  7. python模块详解 XML

    XML模块 XML是实现不同语言或程序之间进行数据交换的协议,和json一样. XML格式: <?xml version="1.0" encoding="UTF-8 ...

  8. 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 ...

  9. Python模块 shelve xml configparser hashlib

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

随机推荐

  1. SQL基础教程(第2版)第3章 聚合与排序:3-3 为聚合结果指定条件

    第3章 聚合与排序:3-3 为聚合结果指定条件 ● 使用COUNT函数等聚合函数对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句.● 聚合函数可以在SELECT子句. ...

  2. CSS 选择器权重计算规则(转)

    其实,CSS有自己的优先级计算公式,而不仅仅是行间>内部>外部样式:ID>class>元素. 一.样式类型 1.行间 <h1 style="font-size: ...

  3. 总结一些常用的训练 GANs 的方法

    众所周知,GANs 的训练尤其困难,笔者自从跳入了 GANs 这个领域(坑),就一直在跟如何训练 GANs 做「对抗训练」,受启发于 ganhacks,并结合自己的经验记录总结了一些常用的训练 GAN ...

  4. JDBC-使用Java连接数据库-基础篇

    这是小主第一次写Java连接数据库博客,初学Java之时,Java连接数据库是我最头疼的,不过经过一个月的学习,也差不多略有收获,所以给大家分享一下. Java连接数据库大约需要五大步骤: 创建数据库 ...

  5. PHPCMS 1分钟快速搭建

    一.下载CMS源码 https://www.yzmcms.com/xiazai 下载完成后得到一个这样的压缩包 接着下载PHPStudy,安装只要一直点下一步就可以了 安装完成后打开,如下图启动两个地 ...

  6. sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)

    1 accuracy_score:分类准确率分数是指所有分类正确的百分比.分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型.常常误导初学 ...

  7. 实例说明 PeekMessage与GetMessage的区别

    PeekMessage与GetMessage的对比相同点:PeekMessage函数与GetMessage函数都用于查看应用程序消息队列,有消息时将队列中 的消息派发出去. 不同点:无论应用程序消息队 ...

  8. python-变量及其数据类型-01

    目录 python-变量及其数据类型-01 1. 第一个python程序 2. 注释 3. 变量 4. 关键字 5. 变量的类型 python-变量及其数据类型-01 1. 第一个python程序 p ...

  9. 在CentOS7上从源码编译安装redis,并做成服务程序

    1.安装编译的依赖环境 # 安装pcre开发包: yum install -y pcre-devel # 安装ssl功能需要openssl库 yum -y install openssl-devel ...

  10. latex学习笔记----数学公式

    https://www.jianshu.com/p/d7c4cf8dc62d 1.数学公式在  \(  和  \)之间,$和$之间,或者\begin{math}和\end{math}之间 2.对于较大 ...