python模块之shelve,xml,hashlib,configpaser
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的更多相关文章
- 19 模块之shelve xml haslib configparser
shelve 什么是shelve模块 也是一种序列化方式使用方法 1.opne 2.读写 3.close特点:使用方法比较简单 提供一个文件名字就可以开始读写 读写的方法和字典一致 你可以把它当成带有 ...
- python模块 os&sys&subprocess&hashlib模块
os模块 # os模块可根据带不带path分为两类 # 不带path print(os.getcwd()) # 得到当前工作目录 print(os.name) # 指定你正在使用的操作系统,windo ...
- python 模块之-shelve
shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型 import shelve f = shelve ...
- Python模块:configparser、hashlib、(subprocess)
configparser模块: 此模块用于生成和修改常见配置文档. 一个常见配置文件(.ini的后缀名)格式如下: [DEFAULT] # DEFAULT 是指后面的字典里都会默认有的内容 Serve ...
- python模块:shelve
shelve 1)模块功能:以 key - value 的方式存储数据. 2)写数据 >>> import shelve >>> db = shelve.open( ...
- Python模块之shelve
shelve是python的自带model. 可以直接通过import shelve来引用. shelve类似于一个存储持久化对象的持久化字典,即字典文件. 使用方法也类似于字典. 保存对象至shel ...
- python模块详解 XML
XML模块 XML是实现不同语言或程序之间进行数据交换的协议,和json一样. XML格式: <?xml version="1.0" encoding="UTF-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 ...
- Python模块 shelve xml configparser hashlib
常用模块1. shelve 一个字典对象模块 自动序列化2.xml 是一个文件格式 写配置文件或数据交换 <a name="hades">123</a>3. ...
随机推荐
- Django1.11创建
Djiango 1.11.1 虚拟环境配置 创建虚拟环境 mkvirtualenv 虚拟环境名字 -p python3 安装django pip install django==1.11.11 卸载包 ...
- vi粘贴代码后格式混乱的问题
最近在远程终端使用vi发现从其他地方复制代码的后,粘贴到vi里面出现格式变乱的问题. 主要是因为终端通常无法区分输入是来自用户输入还是来自粘贴,所以终端也不能通知 vim 输入来自何处.在 vim 里 ...
- HDU-3038 How Many Answers Are Wrong(带权并查集区间合并)
http://acm.hdu.edu.cn/showproblem.php?pid=3038 大致题意: 有一个区间[0,n],然后会给出你m个区间和,每次给出a,b,v,表示区间[a,b]的区间和为 ...
- Maven--远程仓库的认证
大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库. 配置认证信息和配置仓库信息不同,仓库信息可以直接配置在 POM 文件中,但是认证信息必须配置在 ...
- aop 实现原理
aop 底层采用代理机制实现 接口 + 实现类 :spring 采用 jdk 的 动态代理 只有实现类:spring 采用 cglib 字节码增强 aop专业术语 1.target(目标) 需要被代理 ...
- win10下安装cygwin全过程
简单讲:cygwin就是在windows系统上跑linux和unix的环境,跨平台移植的应用程序移植. 安装步骤: 下载cygwin: 打开官网https://cygwin.com/install.h ...
- ZZJ_淘淘商城项目:day01(RESTful Web Service、SVN)
淘淘商城项目是很适合初级Java程序员练习的实战项目,本次复习是另一位张老师教授的课,内容上与之前入老师版taotao商城比较有些新东西加了进来. 因此有必要记录下那些直到现在还可供参考的技术亮点分享 ...
- SQL服务器攻击总结-注入
查库选择convert(int,db_name())sysobjects 查当前表id,从sysobjects中选择id,xtype ='u'//此处要记录下数据库的id syscolumns查表对应 ...
- Seconds from winning
英语沙龙 1. Who winned the game? Answer: It was not Paxton who would hoist the winner's trophy. Paxton h ...
- Cell theory|Bulk RNA-seq|Cellar heterogeneity|Micromanipulation|Limiting dilution|LCM|FACS|MACS|Droplet|10X genomics|Human cell atlas|Spatially resolved transcriptomes|ST|Slide-seq|SeqFISH|MERFISH
生物信息学 Cell theory:7个要点 All known living things are made up of one or more cells. All living cells ar ...