python目录操作之python遍历文件夹后将结果存储为xml


Posted in Python onJanuary 27, 2014

Linux服务器有CentOS、Fedora等,都预先安装了Python,版本从2.4到2.5不等,而Windows类型的服务器也多数安装了Python,因此只要在本机写好一个脚本,上传到对应机器,在运行时修改参数即可。

Python操作文件和文件夹使用的是os库,下面的代码中主要用到了几个函数:

os.listdir:列出目录下的文件和文件夹
os.path.join:拼接得到一个文件/文件夹的全路径
os.path.isfile:判断是否是文件
os.path.splitext:从名称中取出一个子部分

下面是目录操作的代码

def search(folder, filter, allfile):
    folders = os.listdir(folder)
    for name in folders:
        curname = os.path.join(folder, name)
        isfile = os.path.isfile(curname)
        if isfile:
            ext = os.path.splitext(curname)[1]
            count = filter.count(ext)
            if count>0:
                cur = myfile()
                cur.name = curname
                allfile.append(cur)
        else:
            search(curname, filter, allfile)
    return allfile

在返回文件的各种信息时,使用自定义类allfile来保存文件的信息,在程序中只用到了文件的全路径,如果需要同时记录文件的大小、时间、类型等信息,可以仿照代码进行扩充。

class myfile:
    def __init__(self):
        self.name = ""

 得到存储文件信息的数组后,还可以将其另存成xml格式,下面是代码,在使用时,需要从Document中导入xml.dom.minidom

下面是保存为xml的代码

def generate(allfile, xml):
    doc = Document()
    root = doc.createElement("root")
    doc.appendChild(root)
    for myfile in allfile:
        file = doc.createElement("file")
        root.appendChild(file)
        name = doc.createElement("name")
        file.appendChild(name)
        namevalue = doc.createTextNode(myfile.name)
        name.appendChild(namevalue)
    print doc.toprettyxml(indent="")
    f = open(xml, 'a+')
    f.write(doc.toprettyxml(indent=""))
    f.close()

执行的代码如下
if __name__ == '__main__':
    folder = "/usr/local/apache/htdocs"
    filter = [".html",".htm",".php"]
    allfile = []
    allfile = search(folder, filter, allfile)
    len = len(allfile)
    print "found: " + str(len) + " files"
    xml = "folder.xml"
    generate(allfile, xml)

在Linux命令行状态下,执行Python filesearch.py,便可以生成名为folder.xml的文件。

如果要在Windows中运行该程序,需要把folder变量改成Windows下的格式,例如c:\\apache2\htdocs,然后执行c:\python25\python.exe filesearch.py(这里假设python的安装目录是c:\python25)

Python 相关文章推荐
Python简单计算文件夹大小的方法
Jul 14 Python
Django的session中对于用户验证的支持
Jul 23 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
python3利用smtplib通过qq邮箱发送邮件方法示例
Dec 03 Python
手把手教你如何安装Pycharm(详细图文教程)
Nov 28 Python
安装好Pycharm后如何配置Python解释器简易教程
Jun 28 Python
python实现切割url得到域名、协议、主机名等各个字段的例子
Jul 25 Python
python双向链表原理与实现方法详解
Dec 03 Python
Python如何读取文件中图片格式
Jan 13 Python
python 画图 图例自由定义方式
Apr 17 Python
Python内置异常类型全面汇总
May 28 Python
让你相见恨晚的十个Python骚操作
Nov 18 Python
paramiko模块安装和使用(远程登录服务器)
Jan 27 #Python
python使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 #Python
python list使用示例 list中找连续的数字
Jan 27 #Python
Python批量修改文件后缀的方法
Jan 26 #Python
使用cx_freeze把python打包exe示例
Jan 24 #Python
Python的函数嵌套的使用方法
Jan 24 #Python
下载安装setuptool和pip linux安装pip    
Jan 24 #Python
You might like
PHP中数据类型转换的三种方式
2015/04/02 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
Javascript 判断函数类型完美解决方案
2009/09/02 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
关于动态生成dom绑定事件失效的原因及解决方法
2016/08/06 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
js设置和获取自定义属性的方法
2016/10/20 Javascript
详解jQuery的表单验证插件--Validation
2016/12/21 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
Express进阶之log4js实用入门指南
2018/02/10 Javascript
AngularJS select加载数据选中默认值的方法
2018/02/28 Javascript
微信小程序实现跑马灯效果完整代码(附效果图)
2018/05/30 Javascript
Redux实现组合计数器的示例代码
2018/07/04 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
速记Python布尔值
2017/11/09 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python Subprocess模块原理及实例
2019/08/26 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
python3 xpath和requests应用详解
2020/03/06 Python
HTML5地理定位与第三方工具百度地图的应用
2016/11/17 HTML / CSS
HTML5响应式(自适应)网页设计的实现
2017/11/17 HTML / CSS
使用canvas实现黑客帝国数字雨效果
2020/01/02 HTML / CSS
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
Weblogic的布署方式
2013/08/23 面试题
介绍一下linux的文件系统
2012/03/20 面试题
会计职业生涯规划范文
2014/01/04 职场文书
中班幼儿评语大全
2014/04/30 职场文书
软件项目实施计划书
2014/05/02 职场文书
财务工作个人总结
2015/02/27 职场文书
装饰施工员岗位职责
2015/04/11 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
正确使用MySQL INSERT INTO语句
2021/05/26 MySQL
新手初学Java List 接口
2021/07/07 Java/Android