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对两个有序列表进行合并和排序的例子
Jun 13 Python
Python验证码识别处理实例
Dec 28 Python
Python 实现一个颜色色值转换的小工具
Dec 06 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python存储16bit和32bit图像的实例
Dec 05 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
Numpy之reshape()使用详解
Dec 26 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
快速解决jupyter启动卡死的问题
Apr 10 Python
Python用5行代码实现批量抠图的示例代码
Apr 14 Python
PyMongo 查询数据的实现
Jun 28 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
如何做到多笔资料的同步
2006/10/09 PHP
创建配置文件 用PHP写出自己的BLOG系统 2
2010/04/12 PHP
apache和php之间协同工作的配置经验分享
2013/04/08 PHP
php提交表单发送邮件的方法
2015/03/20 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
一段实用的php验证码函数
2016/05/19 PHP
Code:findPosX 和 findPosY
2006/12/20 Javascript
jQuery 下拉列表 二级联动插件分享
2012/03/29 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
javascript运动详解
2015/07/06 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
jQuery实现最简单实用的分秒倒计时
2017/02/05 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
Angular4学习教程之DOM属性绑定详解
2018/01/04 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
React如何避免重渲染
2018/04/10 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
python版本的读写锁操作方法
2016/04/25 Python
Python中类的初始化特殊方法
2017/12/01 Python
Pandas中Series和DataFrame的索引实现
2019/06/27 Python
django 模型中的计算字段实例
2020/05/19 Python
利用CSS3的flexbox实现水平垂直居中与三列等高布局
2016/09/12 HTML / CSS
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
Html5元素及基本语法详解
2016/08/02 HTML / CSS
canvas像素点操作之视频绿幕抠图
2018/09/11 HTML / CSS
Linux操作面试题
2015/02/11 面试题
质检部部长职责
2013/12/16 职场文书
环境工程专业自荐信
2014/03/03 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
卖车协议书范本4篇
2014/10/01 职场文书
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript