python学习----8.13-shelve-xml-configparser-hashlib
Posted liu-guang-hui
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习----8.13-shelve-xml-configparser-hashlib相关的知识,希望对你有一定的参考价值。
shelve模块
是什么
一个用于序列化的模块
为什么
使用pickle和json都需要与文件打交道
为了更加方便而退出的另一种序列化方式
怎么用
1.open
2.以key-value方式进行存取
3.close
总结
可以存储python所有基础数据
只需要指定文件名字即可,使用方法与字典类型相同
其实该模块时是对pickle模块的封装,使其更简单
import shelve s1=shelve.open(‘shelvetest.txt‘) s1[‘date‘]=‘8-13‘ s1[‘list1‘]=‘123‘,‘456‘ s1.close() s2=shelve.open(‘shelvetest.txt‘) print(s2.get(‘list1‘)) print(s2.get(‘date‘))
xml模块
什么是xml
是一种标记语言(计算机能识别的文本)
xml有什么用
制定了一种文本书写规范,是的计算机能够轻松识别这些数据就和python一样
为什么不直接用python语言啦进行传输,计算机识别起来太费劲(语法太多,变化太复杂)所以需要一种更简单的解决方案
xml语法标准
一、任何的起始标签都必须有一个结束标签。
二、可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标签。这种语法是在大于符号之前紧跟一个斜线(/),例如<百度百科词条/>。xml解析器会将其翻译成<百度百科词条></百度百科词条>。
三、标签必须按合适的顺序进行嵌套,所以结束标签必须按镜像顺序匹配起始标签。这好比是将起始和结束标签看做是数学中的左右括号:在没有关闭所有内部括之前,是不能关闭外面的括号的。
四、所有的特性都必须有值。
五、所有的特性都必须在值得周围加上双引号
总结
xml是一种数据格式遵循一定书写规范,用于多个平台之间的数据交换,和json的作用是一样的
使用场景:配置文件、常规的数据交换,例如从服务器获取一段新闻
与json的区别:
作用 一样都是一种数据个数
xml比json诞生早
json的数据比xml小
目前json是主流
python中的xml
1.标签的组成
<tagname attributename="value">text<subtags/></tagname>
2.数据分析(拿到想要的数据)
3.代码生成xml文档
4.数据的修改
导入核心模块
import xml.etree.ElmentTree 表示节点数
数据分析
Elment核心成员
tag attrib text
常用方法
Elment
getchildren()获取所有子标签
find 从子标签中获取名字匹配的第一个子标签
findall 从子标签中获取名字匹配的所有子标签
iter 从子全文中获取名字匹配的所有标签 返回迭代器
get 获取指定属性的值
append 删除子标签
remove 添加删除子标签
ElmentTree
parse 文本文件转对象
dump 对象转文本
write 写入
getroot 获取根标签
生成xml
创建节点
添加内容
转为节点数
写入文件
""" 用代码生成一个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"] = "20" persson.text = "这是一个person标签" root.append(persson) # 写入文件 t1.write("newXML.xml",encoding="utf-8",xml_declaration=True)
configparser
配置文件解析模块,用于提供程序运行所需要的一些信息的文件 后缀ini cfg
用处:方便用户修改,例如超时时间
配置文件内容格式
只包括两种元素
section 分区
option 选项
一个文件可以有多个section
一个section可以有多个选项
核心功能
1.section 获取所有分区
2.options 获取所有选项
3.get 获取一个值 传入 section option
注意:大小写不敏感
# 假装做一个下载功能 最大链接速度可以由用户来控制 用户不会看代码 所以提供一个配置文件 import configparser # 得到配置文件对象 cfg = configparser.ConfigParser() # 读取一个配置文件 cfg.read("download.ini",encoding=‘utf-8‘) print(cfg.sections()) print(cfg.options("section1")) print(type(cfg.get("section1","maxspeed"))) print(type(cfg.getint("section1","maxspeed"))) print(cfg.getint("section2","minspeed")) # 修改最大速度为2048 cfg.set("section1","maxspeed","1024") cfg.write(open("download.ini","w",encoding="utf-8")) cfg.read("download.ini",encoding=‘utf-8‘) print(cfg.getint("section1","maxspeed"))
hashlib
hash是什么?
是一种算法
用于将任意长度的数据,压缩映射到一段固定长度的字符(提取特征)
hash的特点:
1.输入不同的数据,得到的hash值有可能不同
2.不能通过hash值来得到输入的值
3.如果算法相同,无论输入的数据长度是多少,得到的hash长度相同
综上特点,hash算法用于加密和文件校验
加密方式有很多,常用的一种hash算法是MD5
常用的提升安全性的手段就是加盐
就是把你加密前的数据做一些改动,例如把顺序反过来
import hashlib md=hashlib.md5() md.update(‘哈哈哈哈‘.encode(‘utf-8‘)) print(md.hexdigest()) # # # # # 今后我们在写一些需要网络传输的程序时 如果要进行加密 最好把加密的算法搞得更复杂 # # 密码长度为6位 # # abcdef # # 在前面加一个 abc 在后面加一个 cba 完事以后在加密 # pwd=‘abcdef‘ md1=hashlib.md5() md1.update(‘123‘.encode(‘utf-8‘)) md1.update(pwd.encode(‘utf-8‘)) md1.update(‘456‘.encode(‘utf-8‘)) print(md1.hexdigest()) #必须加盐才能加密 import hmac h=hmac.new(‘556677‘.encode(‘utf-8‘)) h.update(‘abcd‘.encode(‘utf-8‘)) print(h.hexdigest())
以上是关于python学习----8.13-shelve-xml-configparser-hashlib的主要内容,如果未能解决你的问题,请参考以下文章