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与文件进行交互的方法
Mar 01 Python
python读取LMDB中图像的方法
Jul 02 Python
Python面向对象之反射/自省机制实例分析
Aug 24 Python
Python 共享变量加锁、释放详解
Aug 28 Python
使用NumPy读取MNIST数据的实现代码示例
Nov 20 Python
Python2与Python3的区别点整理
Dec 12 Python
浅谈python 中的 type(), dtype(), astype()的区别
Apr 09 Python
基于Python爬虫采集天气网实时信息
Jun 05 Python
基于pytorch中的Sequential用法说明
Jun 24 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
如何使用 Flask 做一个评论系统
Nov 27 Python
python入门之算法学习
Apr 22 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
Laravel 5框架学习之路由、控制器和视图简介
2015/04/07 PHP
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
2011/04/06 Javascript
iframe异步加载实现点击左边菜单加载右边内容实例讲解
2013/03/04 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
js图片卷帘门导航菜单特效代码分享
2015/09/10 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
详解Jquery 遍历数组之$().each方法与$.each()方法介绍
2017/01/09 Javascript
JavaScript自定义文本框光标
2017/03/05 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
Express + Node.js实现登录拦截器的实例代码
2017/07/01 Javascript
Three.js利用性能插件stats实现性能监听的方法
2017/09/25 Javascript
Vue.js实现双向数据绑定方法(表单自动赋值、表单自动取值)
2018/08/27 Javascript
VUE2.0 ElementUI2.0表格el-table自适应高度的实现方法
2018/11/28 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
通过实例了解Render Props回调地狱解决方案
2020/11/04 Javascript
举例详解Python中的split()函数的使用方法
2015/04/07 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
Django框架视图介绍与使用详解
2019/07/18 Python
Python 写入训练日志文件并控制台输出解析
2019/08/13 Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
2020/02/16 Python
python多线程实现同时执行两个while循环的操作
2020/05/02 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
莫斯科的韩国化妆品店:Sifo
2019/12/04 全球购物
超市营业员求职简历的自我评价
2013/10/17 职场文书
会计大学生职业生涯规划书范文
2014/01/13 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
起诉状范本
2015/05/20 职场文书
给朋友的赠语
2015/06/23 职场文书
安全生产标语口号
2015/12/26 职场文书
施工安全责任协议书
2016/03/23 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS