Python中使用glob和rmtree删除目录子目录及所有文件的例子


Posted in Python onNovember 21, 2014

一、batch与shell中

目录及文件:

C:\TESTFOLDER\TEST

├─Test2

└─Test3

        test.txt

删除目录及其下的所有文件:

rmdir /S /Q c:\TestFolder\test

删除所有目录下的文件,但是目录结构不能被删除:

del /F /S /Q c:\TestFolder\test\*

Linux类似的命令为:

rm /rf /home/aaa/test

二、python中

:注意如果有错误会有异常抛出,需要处理异常。

1)删除文件且不支持通配符: os.remove()
2) 删除空的目录: os.rmdir()
3) 删除空的目录及子目录: os.removedirs()
3) 删除目录及其子目录中的文件:shutil.rmtree()

rmtree+异常处理:

#code:

import shutil

def retreeExceptionHandler(fun,path,excinfo):

  print("Error:" + path)

  print(excinfo[1])

  

shutil.rmtree('c:\\testfolder\\test',ignore_errors=False,onerror=retreeExceptionHandler)

 

#result:

Error:c:\testfolder\test\Test3

[Error 32] The process cannot access the file because it is being used by another process: 'c:\\testfolder\\test\\Test3'

Error:c:\testfolder\test

[Error 145] The directory is not empty: 'c:\\testfolder\\test'

使用rmdir和remove等价于rmtree:

#! /usr/bin/env python  

#coding=utf-8  

## {{{ Recipe 193736 (r1): Clean up a directory tree   

""" removeall.py: 

 

   Clean up a directory tree from root. 

   The directory need not be empty. 

   The starting directory is not deleted. 

   Written by: Anand B Pillai <abpillai@lycos.com> """  

  

import sys, os  

  

ERROR_STR= """Error removing %(path)s, %(error)s """  

  

def rmgeneric(path, __func__):  

  

    try:  

        __func__(path)  

        print 'Removed ', path  

    except OSError, (errno, strerror):  

        print ERROR_STR % {'path' : path, 'error': strerror }  

              

def removeall(path):  

  

    if not os.path.isdir(path):  

        return  

      

    files=os.listdir(path)  

  

    for x in files:  

        fullpath=os.path.join(path, x)  

        if os.path.isfile(fullpath):  

            f=os.remove  

            rmgeneric(fullpath, f)  

        elif os.path.isdir(fullpath):  

            removeall(fullpath)  

            f=os.rmdir  

            rmgeneric(fullpath, f) 

## End of recipe 193736 }}}

三、通配符

glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索,支持通配符操作,*,?,[]这三个通配符,*代表0个或多个字符,?代表一个字符,[]匹配指定范围内的字符,如[0-9]匹配数字。

它的主要方法就是glob,该方法返回所有匹配的文件路径列表,该方法需要一个参数用来指定匹配的路径字符串(本字符串可以为绝对路径也可以为相对路径),其返回的文件名只包括当前目录里的文件名,不包括子文件夹里的文件。

Python 相关文章推荐
Python实现给qq邮箱发送邮件的方法
May 28 Python
python中实现迭代器(iterator)的方法示例
Jan 19 Python
在Python的一段程序中如何使用多次事件循环详解
Sep 07 Python
python thrift搭建服务端和客户端测试程序
Jan 17 Python
如何使用VSCode愉快的写Python于调试配置步骤
Apr 06 Python
python中强大的format函数实例详解
Dec 05 Python
在python中实现调用可执行文件.exe的3种方法
Jul 07 Python
Python类中的魔法方法之 __slots__原理解析
Aug 26 Python
matplotlib.pyplot画图并导出保存的实例
Dec 07 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
Python绘制散乱的点构成的图的方法
Apr 21 Python
python库Tsmoothie模块数据平滑化异常点抓取
Jun 10 Python
Python中使用SAX解析xml实例
Nov 21 #Python
python sort、sorted高级排序技巧
Nov 21 #Python
python中global与nonlocal比较
Nov 21 #Python
python装饰器decorator介绍
Nov 21 #Python
python多线程操作实例
Nov 21 #Python
Python中的闭包详细介绍和实例
Nov 21 #Python
Python多线程同步Lock、RLock、Semaphore、Event实例
Nov 21 #Python
You might like
批量获取memcache值并按key的顺序返回的实现代码
2011/06/14 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Yii框架的布局文件实例分析
2019/09/04 PHP
JQuery UI皮肤定制
2009/07/27 Javascript
js实现的日期操作类DateTime函数代码
2010/03/16 Javascript
Ajax搜索结果页面下方的分页按钮的生成
2012/04/05 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
2013/05/17 Javascript
seaJs的模块定义和模块加载浅析
2014/06/06 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
jquery.validate表单验证插件使用方法解析
2016/11/07 Javascript
实例解析Array和String方法
2016/12/14 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
Bootstrap面板学习使用
2017/02/09 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
vuex实现购物车的增加减少移除
2020/06/28 Javascript
[00:11]战神迅矛
2019/03/06 DOTA
[09:13]DOTA2-DPC中国联赛 正赛 Ehome vs Magma 选手采访 1月19日
2021/03/11 DOTA
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
python从list列表中选出一个数和其对应的坐标方法
2019/07/20 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
大数据分析用java还是Python
2020/07/06 Python
基于Python爬取fofa网页端数据过程解析
2020/07/13 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
CHARLES & KEITH澳大利亚官网:新加坡时尚品牌
2019/01/22 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
大学生标准推荐信范文
2013/11/25 职场文书
小区门卫值班制度
2014/01/24 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
员工离职通知函
2015/04/25 职场文书
绿里奇迹观后感
2015/06/15 职场文书
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android