处理xml模块、configparser模块、hashlib模块、subprocess模块

xml模块

新建a.xml内容为:

<data>
    <country name="Liechtenstein">
        <rank updated="yes">2</rank>
        <year updated="yes" version="1.0">2009</year>
        <gdppc>141100</gdppc>
        <neighbor direction="E" name="Austria" />
        <neighbor direction="W" name="Switzerland" />
    <egon age="18">hello</egon><egon age="18">hello</egon></country>
    <country name="Singapore">
        <rank updated="yes">5</rank>
        <year updated="yes" version="1.0">2012</year>
        <gdppc>59900</gdppc>
        <neighbor direction="N" name="Malaysia" />
    <egon age="18">hello</egon><egon age="18">hello</egon></country>
    <country name="Panama">
        <year updated="yes" version="1.0">2012</year>
        <gdppc>13600</gdppc>
        <neighbor direction="W" name="Costa Rica" />
        <neighbor direction="E" name="Colombia" />
    <egon age="18">hello</egon><egon age="18">hello</egon></country>
</data>
 1 import xml.etree.ElementTree as ET
 2 tree = ET.parse(‘a.xml‘)#初始化
 3 root = tree.getroot()#获取根节点
 4 for child in root:
 5     print(‘====>‘,child)
 6     for i in child:#子节点
 7         print(i.tag,i.attrib,i.text)#tag标签 attrib属性 text内容
 8
 9
10 # 查找element元素的三种方式
11 years = root.iter(‘year‘)#扫描整个xml文档树(迭代器)
12 for i in years:
13     print(i)
14
15 print(root.find(‘country‘))#在root的子节点找,只找一个
16 print(root.findall(‘country‘))#在root的子节点找,找所有
17
18 #修改
19 years = root.iter(‘year‘)#扫描整个xml文档树(迭代器)
20 for year in years:
21     year.text = str(int(year.text)+1)
22     year.set(‘updated‘,‘yes‘)#设置属性
23     year.set(‘version‘,‘1.0‘)#设置属性
24 tree.write(‘a.xml‘)
25
26 #删除
27 for county in root.iter(‘country‘):
28     rank = county.find(‘rank‘)
29     if int(rank.text) >10:
30         county.remove(rank)
31 tree.write(‘a.xml‘)
32
33
34 #增加
35 for county in root.iter(‘country‘):
36     e = ET.Element(‘egon‘)
37     e.text = ‘hello‘
38     e.attrib = {‘age‘:‘18‘}#不能为int
39     county.append(e)
40 tree.write(‘a.xml‘)

configparser模块

新建a.cfg内容为:

[section1]
k1 = v1
k2:v2
user=egon
age=18
is_admin=true
salary=31

[section2]
k1 = v1
import configparser

config=configparser.ConfigParser()
config.read(‘a.cfg‘)

#查看所有的标题
res=config.sections() #[‘section1‘, ‘section2‘]
print(res)

#查看标题section1下所有key=value的key
options=config.options(‘section1‘)
print(options) #[‘k1‘, ‘k2‘, ‘user‘, ‘age‘, ‘is_admin‘, ‘salary‘]

#查看标题section1下所有key=value的(key,value)格式
item_list=config.items(‘section1‘)
print(item_list) #[(‘k1‘, ‘v1‘), (‘k2‘, ‘v2‘), (‘user‘, ‘egon‘), (‘age‘, ‘18‘), (‘is_admin‘, ‘true‘), (‘salary‘, ‘31‘)]

#查看标题section1下user的值=>字符串格式
val=config.get(‘section1‘,‘user‘)
print(val) #egon

#查看标题section1下age的值=>整数格式
val1=config.getint(‘section1‘,‘age‘)
print(val1) #18

#查看标题section1下is_admin的值=>布尔值格式
val2=config.getboolean(‘section1‘,‘is_admin‘)
print(val2) #True

#查看标题section1下salary的值=>浮点型格式
val3=config.getfloat(‘section1‘,‘salary‘)
print(val3) #31.0

hashlib模块

利用hashlib模块进行加密

import hashlib

m=hashlib.md5()
m.update(‘hello‘.encode(‘utf-8‘))
m.update(‘world‘.encode(‘utf-8‘))#多次update会将字符串内容拼接到一起,进行md5加密
print(m.hexdigest())

# 上面例子相当于
m=hashlib.md5()
m.update(‘helloworld‘.encode(‘utf-8‘))
print(m.hexdigest())

# 更简便方法
m=hashlib.md5(‘helloworld‘.encode(‘utf-8‘))
print(m.hexdigest())

# 也可以写成
m=hashlib.md5(‘h‘.encode(‘utf-8‘))
m.update(‘elloworld‘.encode(‘utf-8‘))
print(m.hexdigest())

# 对文件内容进行hash
m=hashlib.md5()
with open(‘a.xml‘,‘rb‘) as f:
    for line in f:
        m.update(line)
print(m.hexdigest())

#相当于耗费内存不推荐使用
m=hashlib.md5()
with open(‘a.xml‘,‘rb‘) as f:
    m.update(f.read())
print(m.hexdigest())

# 加盐:通过md5的特性,在创建m对象时自定义添加一串字符增加加密难度防止被撞库
password=‘alex3714‘
m=hashlib.md5(‘yihangbailushangqingtian‘.encode(‘utf-8‘))
m.update(password.encode(‘utf-8‘))

passwd_md5=m.hexdigest()

print(passwd_md5)

subprocess模块

#subprocess会开启一个子进程来执行命令,不影响整个程序的运行
#语法:
subprocess.Popen(‘commond‘,shell=True,stdout=subprocess.PIPE,stderr = subprocess.PIPE)
#shell = true,命令为shell命令,stdout=subprocess.PIPE将正确的结果丢给管道保存stderr=subprocess.PIPE将报错放到管道中
print(res.stdout.read())#从管道读取内容
时间: 2024-10-10 00:18:08

处理xml模块、configparser模块、hashlib模块、subprocess模块的相关文章

python学习-xml处理,yaml处理,hashlib,subprocess模块

xml处理模块 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过至今很多传统公司如金融行业的很多系统的接口还主要是xml. xml的格式如下,就是通过<>节点来区别数据结构的: 1 <?xml version="1.0"?> 2 <data> 3 <country name="Liechtenstein"> 4 <rank updated="yes&qu

学习日记0813常用模块configparser,shelve,hashlib,xml

configparser模块 什么是configparser模块 用于解析配置文件 后缀为 ini或者cfg 怎么用configparser模块 查看配置文件中的内容 1 import configparser 2 cfg = configparser.ConferParser() 3 cfg.read('文件路径',encoding='utf-8') 4 print(cfg.sections()) 5 print(cfg.options('section名')) 修改配置文件中的内容 impo

Python hash、xml、configparser、sheve、shutil模块讲解 以及 面向对象初识

今日内容: 1.hash模块2.xml模块3.configparser模块4.sheve 模块5.shutil模块 知识点一:hash什么是hash: hash是一种算法,该算法接受传入的的内容,经过运算得到一串hash如果把hash算法比喻一座工厂 那传给hash算法的内容就是原材料,生产的hash值就是生产出的产品 为何用hash算法: hash值产品有三大特性: 1.只要传入的内容一样,得到的hash值必然是一样的 2.只要我们使用的hash算法固定,无论传入的内容有多大得到的hash值得

python 常用模块 time random os模块 sys模块 json &amp; pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess logging re正则 转自老男孩老师Yuan:http://www.cnblogs.com/yuanchenqi/articles/5732581.html 模块&包(* * * * *) 模块(modue)的概念: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,

python16_day06【类、RE模块、subprocess模块、xml模块、shelve模块】

.title { background-color: #000000; color: #00f508 } 一.shelve模块 1 import shelve 2 3 # 基于pickle模块, 4 5 d = shelve.open('shelve_test') 6 7 8 class Test(object): 9 def __init__(self, n): 10 self.n = n 11 12 t1 = Test(123) 13 t2 = Test(456) 14 name = ['a

python_day7【模块configparser、XML、requests、shutil、系统命令-面向对象】之篇

python内置模块补充 一.configparser configparser:用户处理特定格式的文件,其本质是利用open打开文件 # 节点 [section1] #键值对k1 = v1 k2:v2 k1 = v1 #建:k1 k2 k2:v2 [section2] k1 = v1 k3:v3 [section3] k3 = v3 k4:v4 [section4] k4 = v4 k5:v5 在configparser默认将获取的元素当做一个字符串进行处理,不用特定执行元素的类型 1.获取所

day7 补充模块configparser/hashlib

一.configparser 模块介绍1.1此模块主要解析以下配置文件 [egon] name=egon age=18 is_admin=True salary=3.1 1.2 以下是此模块的用法 import configparser config=configparser.ConfigParser() config.read('a.ini') #取配置 # print(config.sections()) #看标题 # print(config.options(config.sections

pickle\json,configparser,hashlib模块

python常用模块 目录 python常用模块 json模块\pickle模块 configparser模块 hashlib模块 subprocess模块 json模块\pickle模块 首先说一下序列化和反序列化 . 序列化:将数据内容转化成一种特定的格式. 反序列化:将特定的格式在转化成数据内容. 其实我们之前学过序列化和反序列化的方法,即将内存中的数据转化为字符串的格式存进文件中,在从文件中利用eval()的方法反序列化出来.这也是一种方法,但是现在有更方便的方法. json模块是个序列

json&amp;pickle模块、configparse/hashlib/subprocess 模块

一.json 与pickle模块 序列化: 1.什么是序列化&反序列化 内存中的数据类型---->序列化---->特定的格式(json格式或者pickle格式) 内存中的数据类型<----反序列化<----特定的格式(json格式或者pickle格式) 2.为何要序列化 序列化得到结果=>特定的格式的内容有两种用途 1.可用于存储=>用于存档 2.传输给其他平台使用=>跨平台数据交互 ? 强调: 针对用途1的特定一格式:可是一种专用的格式=>pick