标签:
模块补充
import hashlib
hash = hashlib.md5()
hash.update(bytes(‘Qi‘, encoding=‘utf-8‘))
print(hash.hexdigest())
import hashlib
hash = hashlib.sha1()
hash.update(bytes(‘Wu‘,encoding=‘utf-8‘))
print(hash.hexdigest())
import hashlib
hash = hashlib.sha256()
ash.update(bytes(‘Wu‘, encoding=‘utf-8‘))
print(hash.hexdigest())
import hashlib
hash = hashlib.sha384()
ash.update(bytes(‘Wu‘, encoding=‘utf-8‘))
print(hash.hexdigest())
import hashlib
hash = hashlib.sha512()
ash.update(bytes(‘Wu‘, encoding=‘utf-8‘))
print(hash.hexdigest())
ps:以上的价目算法虽然很厉害,但是存在缺陷,可以通过装库来反解,所以在有必要的时候对加密算法中添加自定义key后再来做加密
import hashlib
hash = hashlib.md5(bytes(‘89fds‘,encoding="utf-8"))
hash.update(bytes(‘Wu‘,encoding="utf-8"))
print(hash.hexdigest())
import hmac
h = hamc.new(bytes(‘sasss‘,encoding=‘utf-8))
h.update(bytes(‘Qi‘,encoding=‘utf-8‘))
print(h.hexdigest())
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)#参数一:要打开文件的路径。参数二:指定打开文件时使用什么编码
ret = config.sections()#获取所有的节点,用列表返回
print(ret)
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
ret = config.items(‘k1‘)
print(ret)
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
ret = config.options(‘W‘)
print(ret)
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
ret = config.get(‘w‘,‘k1‘)#获取w节点下的k1的值
ret2 = config.getint(‘section1‘, ‘k1‘)#获取w节点下的k1的值,并转成整型
ret3 = config.getfloat(‘section1‘, ‘k1‘)#获取w节点下的k1的值,并转成浮点型
ret4 = config.getboolean(‘section1‘, ‘k1‘)#获取w节点下的k1的值,并转成bool型
print(ret)
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
config.add_section("WU")#添加一个WU节点
config.write(open(‘test‘, ‘w‘))#将内存中修改后的内容写入到文件中
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
has_sec = config.has_section(‘W3‘)#检查节点W3是否存在存在返回True否则False
print(has_sec)
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
config.remove_section("WU")#删除WU节点
config.write(open(‘test‘, ‘w‘))
import configparser
config = configparser.ConfigParser()
config.read(‘test‘,encoding=‘utf-8‘)
config.remove_option(‘W1‘,‘name‘)#在内存中删除W1节点下的name键值对
config.write(open(‘test‘,‘w‘))#将内存中的内容写入文件
import configparser
config = configparser.ConfigParser()
config.read(‘test‘,encoding=‘utf-8‘)
print(config.has_option(‘W1‘,‘name‘))
import configparser
config = configparser.ConfigParser()
config.read(‘test‘, encoding=‘utf-8‘)
config.set(‘W1‘,‘name‘,‘WuYongQi‘)#将W1节点下的键为name的值改成WuYongQi
config.write(open(‘test‘,‘w‘))#将内存中的内容写入的磁盘
<data>
<country name="Liechtenstein">
<rank updated="yes">2</rank>
<year>2023</year>
<gdppc>141100</gdppc>
<neighbor direction="E" name="Austria" />
<neighbor direction="W" name="Switzerland" />
</country>
<country name="Singapore">
<rank updated="yes">5</rank>
<year>2026</year>
<gdppc>59900</gdppc>
<neighbor direction="N" name="Malaysia" />
</country>
<country name="Panama">
<rank updated="yes">69</rank>
<year>2026</year>
<gdppc>13600</gdppc>
<neighbor direction="W" name="Costa Rica" />
<neighbor direction="E" name="Colombia" />
</country>
</data>
使用 ElementTree.XML
from xml.etree import ElementTree as ET
str_xml = open(‘test.xml‘, ‘r‘).read()#打开文件,读取xml文件内容
root = ET.XML(str_xml)#将字符串解析成xml特殊对象,root代指xml文件的根节点
使用ElementTree.parse
from xml.etree import ElementTree as ET
tree = ET.parse("xo.xml")#直接解析xml文件
root = tree.getroot()#获取xml文件的根节点
Element类的方法
浏览XML文档中所有内容
from xml.etree import ElementTree as ET #使用xml文件夹下的etree文件夹下的EementTree文件,并且自定义名称为ET
-------------- 打开方式一 --------------
str_xml = open(‘test.xml‘, ‘r‘).read()# 打开文件,读取XML文件内容
root = ET.XML(str_xml)#将字符串解析成xml特殊对象,root代指xml文件的根节点
-------------- 打开方式二 --------------
tree = ET.parse("xo.xml")#直接解析xml文件
root = tree.getroot()#获取xml文件的根节点
print(root.tag)# 查看root节点名称
for i in root:#查询XML文档的第二层
print(i.tag, i.attrib)查看第二层节点的标签名称和标签属性
for ii in i: #查询XML文档的第三层
print(ii.tag,ii.text) #查看第三层节点的标签名称和内容
浏览XML文档中指定的节点
from xml.etree import ElementTree as ET
tree = ET.parse("xo.xml")
root = tree.getroot()
print(root.tag)
for i in root.iter(‘year‘):# 查询XML中所有的year节点
print(i.tag, i.text)#输出节点的标签名称和内容
修改节点内容(方法一)
from xml.etree import ElementTree as ET
str_xml = open(‘xo.xml‘, ‘r‘).read()
root = ET.XML(str_xml)
for i in root.iter(‘year‘): #循环所有的year节点
new_year = int(i.text) + 10 #将year节点中的内容 增加十
i.text = str(new_year)
i.set(‘name‘, ‘Wu‘) #设置属性本次循环节点的属性name为Wu
i.set(‘age‘, ‘20‘) #设置属性本次循环节点的属性age为20
del i.attrib[‘name‘] #删除本次循环节点属性name
tree = ET.ElementTree(root) #使用ElementTree下的ElementTree方法
tree.write("test2.xml", encoding=‘utf-8‘)#写如文件test2.xml中,使用utf-8编码
修改节点内容(方法二)
from xml.etree import ElementTree as ET
tree = ET.parse("xo.xml")
root = tree.getroot()
for i in root.iter(‘year‘): #循环所有的year节点
new_year = int( i.text) + 10 # 将year节点中的内容增加十给变量new_year
i.text = str(new_year) #当前循环的节点内容修改为变量new_year
i.set(‘name‘, ‘WU‘) #设置本次循环节点属性name为WU
i.set(‘age‘, ‘25‘) #设置本次循环节点属性age为25
del i.attrib[‘age‘] # 删除本次循环节点属性age
tree.write("test3.xml", encoding=‘utf-8‘) #上面修改的是内存里的内容所以需要我们去写去到文件中,test3.xml为保存的文件名,写入时使用utf-8编码类型
创建XML文档(方法一)
from xml.etree import ElementTree as ET
root = ET.Element("hello")# 创建根节点
# 在根节点下创建第一个节点为son1,并且创建属性name值为hello
a1 = ET.Element(‘son‘, {‘name‘: ‘hello‘})
# 在根节点下创建第二个节点为son2,并且创建属性name值为word
s1 = ET.Element(‘son2‘, {"name": ‘word‘})
root.append(a1) #向跟节点下创建son1
root.append(s1) #向根节点下创建son2
# 在根节点下的第一个节点中继续创建节点,属性name值为Wu
a2 = ET.Element(‘aaaaaa2‘, {‘name‘: ‘Wu‘})
# 在根节点下的第一个节点中继续创建节点,属性name值为Qi
a3 = ET.Element(‘aaaaaa3‘, {‘name‘: ‘Qi‘})
a1.append(a2) #向son节点下创建aaaaaa2
a1.append(a3) #向son节点下创建aaaaaa3
tree = ET.ElementTree(root)
tree.write(‘test4.xml‘,encoding=‘utf-8‘, short_empty_elements=True)#将内容写入文件test4.xml中使用utf-8编码,如果节点中没有text内容那么就自闭合
创建XML文档(方法二)
from xml.etree import ElementTree as ET
# 创建根节点
root = ET.Element("famliy")
# 在根节点下创建第一个节点为son1,并且创建属性name值为hello
a1 = ET.Element(‘son‘, {‘name‘: ‘hello‘})
# 在根节点下创建第二个节点为son2,并且创建属性name值为word
s1 = ET.Element(‘son2‘, {"name": ‘word‘})
root.append(a1) #向跟节点下创建son1
root.append(s1) #向根节点下创建son2
# 在根节点下的第一个节点中继续创建节点age,属性name值为Wu
a2 = ET.SubElement(a1, "age", attrib={‘name‘: ‘Wu‘})
a2.text = ‘hello‘ #向节点No中添加text内容为hello
a1.append(a2) #向son节点下创建age
tree = ET.ElementTree(root)
tree.write(‘test4.xml‘,encoding=‘utf-8‘,xml_declaration=True,short_empty_elements=True)#将内容写入文件test4.xml中使用utf-8编码,如果节点中没有text内容那么久自闭合,并且声明xml
如果创建的xml需要自动换行看上去更美观一些使用xml下的dom下的minidom模块
from xml.etree import ElementTree as ET
from xml.dom import minidom
def prettify(elem): #创建函数来处理内容,将节点转换成字符串,并添加缩进
a = ET.tostring(elem, ‘utf-8‘)
b = minidom.parseString(a)
return b.toprettyxml(indent="\t")
# 创建根节点
root = ET.Element("famliy")
# 在根节点下创建第一个节点为son1,并且创建属性name值为hello
a1 = ET.Element(‘son‘, {‘name‘: ‘hello‘})
# 在根节点下创建第二个节点为son2,并且创建属性name值为word
s1 = ET.Element(‘son2‘, {"name": ‘word‘})
root.append(a1) #向跟节点下创建son1
root.append(s1) #向根节点下创建son2
# 在根节点下的第一个节点中继续创建节点,属性name值为Wu
a2 = ET.SubElement(a1, "age", attrib={‘name‘: ‘儿11‘})
a2.text = ‘孙子‘
a1.append(a2) #向son节点下创建aaaaaa2
aaa = prettify(root)#执行这个函数并把节点传进去
f = open("test4.xml",‘w‘,encoding=‘utf-8‘)#使用open方法写入并保存退出
f.write(aaa)
f.close()
命名空间
标签:
原文地址:http://www.cnblogs.com/WuYongQi/p/5532303.html