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中的yield使用方法
Feb 11 Python
采用Psyco实现python执行速度提高到与编译语言一样的水平
Oct 11 Python
Python进行数据科学工作的简单入门教程
Apr 01 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
利用ctypes提高Python的执行速度
Sep 09 Python
Python判断变量是否为Json格式的字符串示例
May 03 Python
Flask之flask-session的具体使用
Jul 26 Python
解决Pycharm运行时找不到文件的问题
Oct 29 Python
Python 硬币兑换问题
Jul 29 Python
Python装饰器原理与基本用法分析
Jan 07 Python
python字典key不能是可以是啥类型
Aug 04 Python
在python中读取和写入CSV文件详情
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
如何对PHP程序中的常见漏洞进行攻击
2006/10/09 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
php 使用curl模拟登录人人(校内)网的简单实例
2016/06/06 PHP
PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法
2017/08/11 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
php微信开发之图片回复功能
2018/06/14 PHP
PHP小程序支付功能完整版【基于thinkPHP】
2019/03/26 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
浅析JS刷新框架中的其他页面 && JS刷新窗口方法汇总
2013/07/08 Javascript
jQuery setTimeout传递字符串参数报错的解决方法
2014/06/09 Javascript
javascript 10进制和62进制的相互转换
2014/07/31 Javascript
jQuery中prevUntil()方法用法实例
2015/01/08 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
说说AngularJS中的$parse和$eval的用法
2017/09/14 Javascript
vue element table 表格请求后台排序的方法
2018/09/28 Javascript
Django模板继承 extend标签实例代码详解
2019/05/16 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
AutoJs实现刷宝短视频的思路详解
2020/05/22 Javascript
[50:58]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 Mineski vs EG
2018/04/03 DOTA
python里使用正则的findall函数的实例详解
2017/10/19 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
PyTorch中 tensor.detach() 和 tensor.data 的区别详解
2020/01/06 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
校园报刊亭创业计划书
2014/01/02 职场文书
小班秋游活动方案
2014/02/22 职场文书
检查接待方案
2014/02/27 职场文书
园林系毕业生求职信
2014/06/23 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
项目合作意向书
2015/05/08 职场文书
神秘岛读书笔记
2015/07/01 职场文书
小学语文教师研修日志
2015/11/13 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android