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实现
Jan 28 Python
网站渗透常用Python小脚本查询同ip网站
May 08 Python
Python实现识别手写数字大纲
Jan 29 Python
30秒轻松实现TensorFlow物体检测
Mar 14 Python
django 单表操作实例详解
Jul 30 Python
Python:二维列表下标互换方式(矩阵转置)
Dec 02 Python
pytorch中nn.Conv1d的用法详解
Dec 31 Python
Pycharm+Python工程,引用子模块的实现
Mar 09 Python
python代码xml转txt实例
Mar 10 Python
Tensorflow加载Vgg预训练模型操作
May 26 Python
导致python中import错误的原因是什么
Jul 01 Python
next在python中返回迭代器的实例方法
Dec 15 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 存储文本换行实现方法
2010/01/05 PHP
PHP比你想象的好得多
2014/11/27 PHP
PHP中使用imagick生成PSD文件缩略图教程
2015/01/26 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
yii2超好用的日期组件和时间组件
2016/05/05 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
js文件缓存之版本管理详解
2013/07/05 Javascript
js控制浏览器全屏示例代码
2014/02/20 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
Bootstrap开发实战之响应式轮播图
2016/06/02 Javascript
js选择器全面解析
2016/06/27 Javascript
浅谈js-FCC算法Friendly Date Ranges(详解)
2017/04/10 Javascript
解析Vue 2.5的Diff算法
2017/11/28 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
Angular5中状态管理的实现
2018/09/03 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
JS+CSS实现炫酷光感效果
2020/09/05 Javascript
[53:38]OG vs LGD 2018国际邀请赛淘汰赛BO3 第三场 8.26
2018/08/30 DOTA
[00:34]拔城逐梦,热血永恒!2020(秋)完美世界城市挑战赛报名开启
2020/10/09 DOTA
用Python编写一个每天都在系统下新建一个文件夹的脚本
2015/05/04 Python
Python实现的矩阵类实例
2017/08/22 Python
简单了解python模块概念
2018/01/11 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
Python中正反斜杠(‘/’和‘\’)的意义与用法
2019/08/12 Python
什么是python的自省
2020/06/21 Python
Android Q之气泡弹窗的实现示例
2020/06/23 Python
Python中qutip用法示例详解
2020/10/02 Python
安装Anaconda3及使用Jupyter的方法
2020/10/27 Python
canvas学习总结三之绘制路径-线段
2019/01/31 HTML / CSS
中学教师培训制度
2014/01/31 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
广告设计应届生求职信
2014/03/01 职场文书
2014国庆节标语口号
2014/09/19 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书