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 相关文章推荐
利用Psyco提升Python运行速度
Dec 24 Python
python 采集中文乱码问题的完美解决方法
Sep 27 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
Jul 17 Python
Python OpenCV 直方图的计算与显示的方法示例
Feb 08 Python
python3利用venv配置虚拟环境及过程中的小问题小结
Aug 01 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
Python 实现取多维数组第n维的前几位
Nov 26 Python
Python遍历字典方式就实例详解
Dec 28 Python
django API 中接口的互相调用实例
Apr 01 Python
python中plt.imshow与cv2.imshow显示颜色问题
Jul 16 Python
Python Serial串口基本操作(收发数据)
Nov 06 Python
Python获取百度热搜的完整代码
Apr 07 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
解析argc argv在php中的应用
2013/06/24 PHP
Laravel 添加多语言提示信息的方法
2019/09/29 PHP
脚本之家贴图转换+转贴工具用到的js代码超级推荐
2007/04/05 Javascript
Javascript 设计模式(二) 闭包
2010/05/26 Javascript
JavaScript定义类的几种方式总结
2014/01/06 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
angular实现商品筛选功能
2017/02/01 Javascript
js评分组件使用详解
2017/06/06 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
JS使用正则表达式找出最长连续子串长度
2017/10/26 Javascript
在vue-cli项目中使用bootstrap的方法示例
2018/04/21 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
js实现移动端吸顶效果
2020/01/08 Javascript
js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
2020/03/02 Javascript
vue开发简单上传图片功能
2020/06/30 Javascript
跟老齐学Python之重回函数
2014/10/10 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
python实现简易数码时钟
2021/02/19 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
分析运行中的 Python 进程详细解析
2019/06/22 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
2020/03/12 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
pandas apply多线程实现代码
2020/08/17 Python
opencv实现图像平移效果
2021/03/24 Python
社区党务公开实施方案
2014/03/18 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
医生党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
2014年电厂工作总结
2014/12/04 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
中学音乐课教学反思
2016/02/18 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Spring Boot实现文件上传下载
2022/08/14 Java/Android