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 相关文章推荐
centos 下面安装python2.7 +pip +mysqld
Nov 18 Python
讲解Python中fileno()方法的使用
May 24 Python
python基于urllib实现按照百度音乐分类下载mp3的方法
May 25 Python
用Python写一个无界面的2048小游戏
May 24 Python
用python做一个搜索引擎(Pylucene)的实例代码
Jul 05 Python
numpy向空的二维数组中添加元素的方法
Nov 01 Python
Python3.7 dataclass使用指南小结
Feb 22 Python
Jupyter Notebook 实现正常显示中文和负号
Apr 24 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
matplotlib绘制鼠标的十字光标的实现(内置方式)
Jan 06 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 Python
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
Oct 16 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实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
php通过header发送自定义数据方法
2018/01/18 PHP
JQuery 插件制作实践 xMarquee插件V1.0
2010/04/02 Javascript
基于jquery的超简单上下翻
2010/04/20 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
使用javascript实现判断当前浏览器
2015/04/14 Javascript
Seajs 简易文档 提供简单、极致的模块化开发体验
2016/04/13 Javascript
有关jquery与DOM节点操作方法和属性记录
2016/04/15 Javascript
jQuery获取单击节点对象的方法
2016/06/02 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
真正好用的js验证上传文件大小的简单方法
2016/10/27 Javascript
JS实现“隐藏与显示”功能(多种方法)
2016/11/24 Javascript
详谈jQuery中的一些正则匹配表达式
2017/03/08 Javascript
jquery将标签元素的高设为屏幕的百分比
2017/04/19 jQuery
关于redux-saga中take使用方法详解
2018/02/27 Javascript
详解Angularjs 自定义指令中的数据绑定
2018/07/19 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
[53:21]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-CDEC
2014/05/22 DOTA
Python学习资料
2007/02/08 Python
python结合opencv实现人脸检测与跟踪
2015/06/08 Python
python验证码识别教程之利用投影法、连通域法分割图片
2018/06/04 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
python3.7添加dlib模块的方法
2020/07/01 Python
安德玛菲律宾官网:Under Armour菲律宾
2020/07/28 全球购物
JRE、JDK、JVM之间的关系怎样
2012/05/16 面试题
大学生毕业自我评价范文分享
2013/11/07 职场文书
先进事迹报告会感言
2014/01/24 职场文书
军训自我鉴定怎么写
2014/02/13 职场文书
某某同志考察材料
2014/05/28 职场文书
培训研修方案
2014/06/06 职场文书
设计大赛策划方案
2014/06/13 职场文书
单身申明具结书
2015/02/26 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
创业计划书之孕婴生活馆
2019/11/11 职场文书
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js