7.python模块补充
此文章是对上节文章模块的补充
一,xml模块
xml是实现不同语言或程序之间进行数据交换的协议,可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。xml的格式如下,就是通过<>节点来区别数据结构的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<?xml version = "1.0" ?> <data> <country name = "Liechtenstein" > <rank updated = "yes" > 2 < / rank> <year> 2008 < / year> <gdppc> 141100 < / gdppc> <neighbor name = "Austria" direction = "E" / > <neighbor name = "Switzerland" direction = "W" / > < / country> <country name = "Singapore" > <rank updated = "yes" > 5 < / rank> <year> 2011 < / year> <gdppc> 59900 < / gdppc> <neighbor name = "Malaysia" direction = "N" / > < / country> <country name = "Panama" > <rank updated = "yes" > 69 < / rank> <year> 2011 < / year> <gdppc> 13600 < / gdppc> <neighbor name = "Costa Rica" direction = "W" / > <neighbor name = "Colombia" direction = "E" / > < / country> < / data> |
python模块解析xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
导入模块 别名ET import xml.etree.ElementTree as ET tree = ET.parse( "test.xml" ) root = tree.getroot() #显示父节点 print (root.tag) #遍历xml文档 for child in root: print (child.tag, child.attrib) for i in child: print (i.tag,i.text) #只遍历year 节点 for node in root. iter ( 'year' ): print (node.tag,node.text) |
使用模块创建xml文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import xml.etree.ElementTree as ET new_xml = ET.Element( "namelist" ) name = ET.SubElement(new_xml, "name" ,attrib={ "enrolled" : "yes" }) age = ET.SubElement(name, "age" ,attrib={ "checked" : "no" }) sex = ET.SubElement(name, "sex" ) sex.text = '33' name2 = ET.SubElement(new_xml, "name" ,attrib={ "enrolled" : "no" }) age = ET.SubElement(name2, "age" ) age.text = '19' et = ET.ElementTree(new_xml) #生成文档对象 et.write( "test.xml" , encoding= "utf-8" ,xml_declaration=True) ET.dump(new_xml) #打印生成的格式 |
修改或者删除
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import xml.etree.ElementTree as ET tree = ET.parse( "xmltest.xml" ) root = tree.getroot() #修改 for node in root. iter ( 'year' ): new_year = int (node.text) + 1 node.text = str (new_year) node. set ( "updated" , "yes" ) tree.write( "xmltest.xml" ) #删除node for country in root.findall( 'country' ): rank = int (country.find( 'rank' ).text) if rank > 50 : root.remove(country) tree.write( 'output.xml' ) |
二、shutil
高级的 文件、文件夹、压缩包 处理模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import shutil #将文件内容拷贝到另一个文件中,可以部分内容 with open( 'log.log' , 'r' ) as file1,open( 'test_con' , 'w' ) as file2: shutil.copyfileobj( 'file1' , 'file2' ) #拷贝文件 shutil.copyfile( 'log.log' , 'log' ) #拷贝文件权限 shutil.copymode( 'log.log' , 'log' ) shutil.copystat(src, dst) #拷贝状态的信息,包括:mode bits, atime, mtime, flags shutil.copy(src, dst) #拷贝文件和权限 shutil.copy2(src, dst) #拷贝文件和状态信息 |
1
2
3
4
5
6
7
8
9
|
#将 /opt/test 下的文件打包放置当前程序目录 import shutil ret = shutil.make_archive( "wwwwwwwwww" , 'gztar' , root_dir= '/opt/test' ) #将 /opt/test 下的文件打包放置 /root/目录 import shutil ret = shutil.make_archive( "/root" , 'gztar' , root_dir= '/opt/test' ) |
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
1
2
3
4
5
6
7
8
9
10
11
12
|
import zipfile # 压缩 z = zipfile.ZipFile( 'laxi.zip' , 'w' ) z.write( 'a.log' ) z.write( 'data.data' ) z.close() # 解压 z = zipfile.ZipFile( 'laxi.zip' , 'r' ) z.extractall() z.close() |
1
2
3
4
5
6
7
8
9
10
11
12
13
|
import tarfile # 压缩 tar = tarfile.open( 'your.tar' , 'w' ) tar.add( '/Users/wupeiqi/PycharmProjects/bbs2.zip' , arcname= 'bbs2.zip' ) tar.add( '/Users/wupeiqi/PycharmProjects/cmdb.zip' , arcname= 'cmdb.zip' ) tar.close() # 解压 tar = tarfile.open( 'your.tar' , 'r' ) tar.extractall() # 可设置解压地址 tar.close() 复制代码 |
7.python模块补充的更多相关文章
- python模块补充
一.模块补充 configparser 1.基本的读取配置文件 -read(filename) 直接读取ini文件内容 -sections() 得到所有的section,并以列表的形式返回 -opti ...
- 文成小盆友python-num7 -常用模块补充 ,python 牛逼的面相对象
本篇内容: 常用模块的补充 python面相对象 一.常用模块补充 1.configparser模块 configparser 用于处理特定格式的文件,起内部是调用open()来实现的,他的使用场景是 ...
- python day 8: re模块补充,导入模块,hashlib模块,字符串格式化,模块知识拾遗,requests模块初识
目录 python day 8 1. re模块补充 2. import模块导入 3. os模块 4. hashlib模块 5. 字符串格式:百分号法与format方法 6. 模块知识拾遗 7. req ...
- Python开发【第七篇】: 面向对象和模块补充
内容概要 特殊成员 反射 configparser模块 hashlib模块 logging模块 异常处理 模块 包 1. 特殊成员 什么是特殊成员呢? __init_()就是个特殊的成员. 带双下划线 ...
- python之re模块补充和其他模块(collection、time、queue、datetime、random)
目录 re模块补充说明 collections模块 queue模块 time模块 datetime模块 random模块 re模块补充说明 在正则表达式中,'()'的作用是进行分组,但是在re模块中, ...
- python 模块和包
一,模块 1,什么是模块? 常见的场景: 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py 的后缀. 但其实 import 加载的模块分为四个通用类别: 1,使用pyt ...
- python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctype ...
- python 模块和包以及他们的导入关系
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- 常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctyp ...
随机推荐
- 重写UIPageControl实现自定义按钮
有时候UIPageControl需要用到白色的背景, 那么会导致上面的点按钮看不见或不清楚,我们可以通过继承该类重写函数来更换点按钮的图片现实.实现思路如下.新建类继承UIPageControl : ...
- 【poj1745】 Divisibility
http://poj.org/problem?id=1745 (题目链接) 题意 给出n串数,可以在其两两之间添加+或-,判断是否存在某种方案使得出的表达式的答案可以整除k. Solution 水题一 ...
- POJ2823 Sliding Window
Time Limit: 12000MS Memory Limit: 65536K Total Submissions: 53086 Accepted: 15227 Case Time Limi ...
- Myeclipse连接mysql数据库
第一步:下载mysql驱动 驱动地址:http://www.mysql.com/products/connector/ .选择JDBC Driver for MySQL (Connector/J). ...
- Activity的成员变量
// set by the thread after the constructor and before onCreate(Bundle savedInstanceState) is called. ...
- TP中二维数组的遍历输出
例子分析 <volist name="list" id="vo"> <volist name="vo['sub']" id ...
- Effective Java之避免创建不必要的对象
Effective Java中有很多值得注意的技巧,今天我刚开始看这本书,看到这一章的时候,我发现自己以前并没有理解什么是不必要的对象,所以拿出来跟大家探讨一下,避免以后犯不必要的错误! 首先书中对不 ...
- [转载]高效使用matlab之四:一个加速matlab程序的例子
原文地址:http://www.bfcat.com/index.php/2012/11/speed-up-app/ 这篇文章原文是matlab网站上的,我把它翻译过来同时自己也学习一下.原文见这里 这 ...
- Web Service 元数据注释(JSR 181)
Web Service 元数据注释(JSR 181) @WebService 1.serviceName: 对外发布的服务名,指定 Web Service 的服务名称:wsdl:service.缺省值 ...
- DOM-based xss
这个漏洞往往存在于客户端脚本,如果一个Javascript脚本访问需要参数的URL,且需要将该信息用于写入自己的页面,且信息未被编码,那么就有可能存在这个漏洞. (一)DOM—based XSS漏洞的 ...