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. ...
随机推荐
- MySQL性能管理及架构设计:第2章 什么影响了MySQL性能
第2章 什么影响了MySQL性能 2-1 影响性能的几个方面 1.服务器的硬件 2.服务器的操作系统 3.数据库的存储引擎 4.数据库的参数配置 5.数据库表结构设计和SQL语句的编写和优化 2-2 ...
- Mybatix实现in查询(五)
在这一节,我们要向大家介绍一下在Mybatis中想要实现in查询,Mapper文件应该怎么配置. 1)在com.mybatis.dao.PartDao中增加接口函数 public List<Pa ...
- python pandas 画图、显示中文、股票K线图
目录: 1.pandas官方画图链接 2.标记图中数据点 3.画图显示中文 4.画股票K线图 5.matplotlib基本用法 6.format输出 6.format输出例子 eps_range=[0 ...
- 27. docker compose 单机 均衡负载
1.编写Dockerfile #Dockerfile FROM python:2.7 LABEL maintaner="eaon eaon123@docker.com" COPY ...
- CMake常用变量
CMake变量 CMake共用七种变量,如下所示: 目录: ()提供信息的变量. ()控制变量. ()描述系统的变量. ()控制构建过程的变量. ()语言变量. ()CTest变量. (7)CPack ...
- for-each用法误区(不能改变数组元素值)
代码例程: /** * 数据加密传输 */ import java.util.Scanner; public class secretPass { public static void m ...
- [Typora ] LaTeX公式输入
[Typora 笔记] 数学输入整理 1.希腊字母表 大写 md 小写 md \(A\) A \(\alpha\) \alpha \(B\) B \(\beta\) \beta \(\Gamma\) ...
- day60-mysql-正则表达式
.正则表达式: 8.1 ^ 匹配 name 名称 以 "e" 开头的数据 select * from person where name REGEXP '^e'; 8.2 $ 匹配 ...
- 1016D.Vasya And The Matrix#矩阵存在
题目出处:http://codeforces.com/contest/1016/problem/D #include<iostream> #define ll long long int ...
- python实现图书管理系统
# 用户注册 def logon(): print("欢迎来到图书管理系统注册页面~") username = input("请输入用户名:") if len( ...