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+Django在windows下的开发环境配置图解
Nov 11 Python
在Python程序中进行文件读取和写入操作的教程
Apr 28 Python
Python爬取qq music中的音乐url及批量下载
Mar 23 Python
基于hashlib模块--加密(详解)
Jun 21 Python
python3 图片referer防盗链的实现方法
Mar 12 Python
Python使用re模块实现信息筛选的方法
Apr 29 Python
django admin 后台实现三级联动的示例代码
Jun 22 Python
浅析python继承与多重继承
Sep 13 Python
Python开发网站目录扫描器的实现
Feb 21 Python
django 数据库连接模块解析及简单长连接改造方法
Aug 29 Python
Python计算机视觉里的IOU计算实例
Jan 17 Python
django注册用邮箱发送验证码的实现
Apr 18 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类中private属性继承问题分析
2012/11/01 PHP
php添加文章时生成静态HTML文章的实现代码
2013/02/17 PHP
php_screw安装使用教程(另一个PHP代码加密实现)
2014/05/29 PHP
phpstudy的php版本自由修改的方法
2017/10/18 PHP
[原创]PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】
2019/07/12 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
2020/08/24 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
来自qq的javascript面试题
2010/07/24 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
JavaScript文档碎片操作实例分析
2015/12/12 Javascript
纯javascript版日历控件
2016/11/24 Javascript
详解Vue2.X的路由管理记录之 钩子函数(切割流水线)
2017/05/02 Javascript
jQuery返回定位插件详解
2017/05/15 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
2018/08/09 jQuery
layui的table中显示图片方法
2018/08/17 Javascript
vue与原生app的对接交互的方法(混合开发)
2018/11/28 Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
2019/05/16 Javascript
JS数组方法reverse()用法实例分析
2020/01/18 Javascript
ES6如何用一句代码实现函数的柯里化
2020/01/18 Javascript
小程序实现密码输入框
2020/11/16 Javascript
详解Python的Django框架中的模版继承
2015/07/16 Python
python二分查找算法的递归实现方法
2016/05/12 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
详解python异步编程之asyncio(百万并发)
2018/07/07 Python
python scp 批量同步文件的实现方法
2019/01/03 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
Python3显示当前时间、计算时间差及时间加减法示例代码
2019/09/07 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
Python将二维列表list的数据输出(TXT,Excel)
2020/04/23 Python
巴西最大的体育用品商城:Netshoes巴西
2016/11/29 全球购物
彪马西班牙官网:PUMA西班牙
2019/06/18 全球购物
会计人员演讲稿
2014/09/11 职场文书
解除劳动合同通知书范本
2015/04/16 职场文书
对PyTorch中inplace字段的全面理解
2021/05/22 Python