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实现的可以拷贝或剪切一个文件列表中的所有文件
Apr 30 Python
python3图片转换二进制存入mysql
Dec 06 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python中交换两个元素的实现方法
Jun 29 Python
Windows下python3.7安装教程
Jul 31 Python
对python 调用类属性的方法详解
Jul 02 Python
python manage.py runserver流程解析
Nov 08 Python
Python加速程序运行的方法
Jul 29 Python
Python使用jpype模块调用jar包过程解析
Jul 29 Python
Pycharm github配置实现过程图解
Oct 13 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
Python图片处理之图片裁剪教程
May 27 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
基于mysql的bbs设计(五)
2006/10/09 PHP
php 变量定义方法
2009/06/14 PHP
php 无限级数据JSON格式及JS解析
2010/07/17 PHP
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
PHP将session信息存储到数据库的类实例
2015/03/04 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
TP5框架简单登录功能实现方法示例
2019/10/31 PHP
基于jQuery的左右滚动实现代码
2010/12/03 Javascript
JavaScript中把数字转换为字符串的程序代码
2013/06/19 Javascript
Nodejs学习笔记之NET模块
2015/01/13 NodeJs
JavaScript使用Prototype实现面向对象的方法
2015/04/14 Javascript
Bootstrap3 input输入框插入glyphicon图标的方法
2016/05/16 Javascript
js与applet相互调用的方法
2016/06/22 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
2017/01/11 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
JS字符串长度判断,超出进行自动截取的实例(支持中文)
2017/03/06 Javascript
vue中手机号,邮箱正则验证以及60s发送验证码的实例
2018/03/16 Javascript
LayUi中接口传数据成功,表格不显示数据的解决方法
2018/08/19 Javascript
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
python翻译软件实现代码(使用google api完成)
2013/11/26 Python
github配置使用指南
2014/11/18 Python
在python下使用tensorflow判断是否存在文件夹的实例
2019/06/10 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python数据结构dict常用操作代码实例
2020/03/12 Python
HTML5新标签兼容——> 的两种方法
2018/09/12 HTML / CSS
加拿大国民体育购物网站:National Sports
2018/11/04 全球购物
模具设计与制造专业应届生求职信
2013/10/18 职场文书
员工培训邀请函
2014/01/11 职场文书
文明宿舍获奖感言
2014/02/07 职场文书
村党支部书记承诺书
2014/05/29 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2015年爱牙日活动总结
2015/03/23 职场文书
2016年推广普通话宣传周活动总结
2016/04/06 职场文书
关于python中模块和重载的问题
2021/11/02 Python