码迷,mamicode.com
首页 > 其他好文 > 详细

第七章 常用模块&面向对象程序设计

时间:2017-08-14 18:52:28      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:new   校验   for   cti   ppc   强制   .text   数据   ges   

一、xml模块

<?xml version="1.0"?>

-<data>


-<country name="Liechtenstein" a="1">

<rank updated="yes">2</rank>

<year updated="yes" version="1.0">2010</year>

<gdppc>141100</gdppc>

<neighbor name="Austria" direction="E"/>

<neighbor name="Switzerland" direction="W"/>

<egon age="18">hello</egon>

</country>


-<country name="Singapore">

<rank updated="yes">5</rank>

<year updated="yes" version="1.0">2013</year>

<gdppc>59900</gdppc>

<neighbor name="Malaysia" direction="N"/>

<egon age="18">hello</egon>

</country>


-<country name="Panama">

<year updated="yes" version="1.0">2013</year>

<gdppc>13600</gdppc>

<neighbor name="Costa Rica" direction="W"/>

<neighbor name="Colombia" direction="E"/>

<egon age="18">hello</egon>

</country>

</data>

import xml.etree.ElementTree as ET
tree=ET.parse(‘a.xml‘)
root=tree.getroot()


for child in root:
  print(child)
  for i in child:
    print(i.tag,i.attrib,i.text) #标签名,属性,内容

years=root.iter(‘year’) #扫描整个xml文档树,找到所有
for i in years:
  print(i)
-------------------------------------------------------------------


res1=root.find(‘country’) #谁来调,就从谁下一层开始找,只找一个
print(res1)
res2=root.findall(‘country’) #谁来调,就从谁下一层开始找,找出全部

print(res2)
-------------------------------------------------------------------


修改
years=root.iter(‘year’)
for year in years:
  year.text=str(int(year.text)+1) #将year的内容加1
  year.set(‘updated’,‘yes’)      #将year标签添加属性
  year.set(‘version’,‘1.0’)

tree.write(‘a.xml’)
-------------------------------------------------------------------

删除
for county in root.iter(‘country‘):  #找到所有country
# print(county.tag)
rank=county.find(‘rank‘)    #查看country下面有没有rank
if int(rank.text) > 10:    #删除rank内容大于10的
county.remove(rank)
tree.write(‘a.xml‘)
-------------------------------------------------------------------
增加节点
for county in root.iter(‘country‘):
e=ET.Element(‘egon‘)    #添加egon的标签
e.text=‘hello‘
e.attrib={‘age‘:‘18‘}
county.append(e)

tree.write(‘a.xml‘)



二、configparser模块

[egon]
name = egon

age = 18

is_admin = True

salary = 3.1


[alex]
name = alex

age = 38

is_admin = False


取配置
print(config.sections()) #看标题
print(config.options(config.sections()[0])) #查看某个标题下的配置项
res=config.get(‘alex‘,‘name‘)#查看某个标题下的某个配置项的值
print(type(res))
res1=config.getint(‘egon‘,‘age‘)#查看某个标题下的某个配置项的整数值
print(type(res1))
res1=config.getboolean(‘egon‘,‘is_admin‘)#查看某个标题下的某个配置项的布偶值
print(type(res1))
res1=config.getfloat(‘egon‘,‘salary‘)#查看某个标题下的某个配置项的浮点值
print(type(res1))

修改
config.remove_section(‘alex‘)      #删除alex标题
config.remove_option(‘egon‘,‘age‘)    #删除egon标题下的age配置
config.add_section(‘alex‘)         #添加alex标题
config.set(‘alex‘,‘name‘,‘SB‘)      #添加alex标题下name配置项,内容为SB
config.write(open(‘a.ini‘,‘w‘))        #保存


三、hashlib模块
hash:一种算法,3.x里代替了md5模块和sha模块
三个特点:
1.内容相同则hash运算结果相同,内容稍微改变则hash值则变
2.不可逆推
3.相同算法:无论校验多长的数据,得到的哈希值长度固定
import hashlib
m=hashlib.md5()
m.update(‘hello‘.encode(‘utf-8‘))
m.update(‘world‘.encode(‘utf-8‘))
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())

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())

加盐
password=‘alex3714‘
m=hashlib.md5(‘yihangbailushangqingtian‘.encode(‘utf-8‘))
m.update(password.encode(‘utf-8‘))
passwd_md5=m.hexdigest()
print(passwd_md5)

import hmac
必须保证初始值一样,hash值才一样,也就是必须都是hello,强制加盐
h=hmac.new(‘hello‘.encode(‘utf-8‘))
h.update(‘world‘.encode(‘utf-8‘))
print(h.hexdigest())

h=hmac.new(‘hello‘.encode(‘utf-8‘))
h.update(‘w‘.encode(‘utf-8‘))
h.update(‘or‘.encode(‘utf-8‘))
h.update(‘ld‘.encode(‘utf-8‘))
print(h.hexdigest())


四、subprocess模块
import subprocess

res=subprocess.Popen(r‘deeddddir D:\04-视频录制存放目录\python18期\day7\xml模块‘,
shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
print(‘-========>‘,res.stderr.read().decode(‘gbk‘))
 
#dir file_path | findstr xml$
res1=subprocess.Popen(r‘dir D:\04-视频录制存放目录\python18期\day7\xml模块‘,
shell=True,
stdout=subprocess.PIPE,)
# stdin=res1.stout
res2=subprocess.Popen(r‘findstr xml$‘,
shell=True,
stdin=res1.stdout,
stdout=subprocess.PIPE,)
print(res2.stdout.read().decode(‘gbk‘))
 
 










 

第七章 常用模块&面向对象程序设计

标签:new   校验   for   cti   ppc   强制   .text   数据   ges   

原文地址:http://www.cnblogs.com/wzlxxj/p/7359425.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!