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中的递归函数
Apr 27 Python
python动态参数用法实例分析
May 25 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
详解python爬虫系列之初识爬虫
Apr 06 Python
python安装pil库方法及代码
Jun 25 Python
python文件处理fileinput使用方法详解
Jan 02 Python
python selenium自动化测试框架搭建的方法步骤
Jun 14 Python
解决更改AUTH_USER_MODEL后出现的问题
May 14 Python
keras 简单 lstm实例(基于one-hot编码)
Jul 02 Python
python主要用于哪些方向
Jul 05 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
如何利用python发送邮件
Sep 26 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
Windows下PHP5和Apache的安装与配置
2006/09/05 PHP
PHP数组操作汇总 php数组的使用技巧
2011/07/17 PHP
php发送get、post请求的6种方法简明总结
2014/07/08 PHP
PHP return语句的另一个作用
2014/07/30 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
爆炸式的JS圆形浮动菜单特效代码
2010/03/03 Javascript
当鼠标滑过文本框自动选中输入框内容的JS代码分享
2013/11/26 Javascript
Visual Studio中js调试的方法图解
2014/06/30 Javascript
Javascript 拖拽雏形(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
基于jquery实现select选择框内容左右移动添加删除代码分享
2015/08/25 Javascript
js点击按钮实现带遮罩层的弹出视频效果
2015/12/19 Javascript
AngularJs 动态加载模块和依赖
2016/09/15 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
Vue的data、computed、watch源码浅谈
2020/04/04 Javascript
JS实现点击掉落特效
2021/01/29 Javascript
python中使用mysql数据库详细介绍
2015/03/27 Python
Python中常用信号signal类型实例
2018/01/25 Python
对python的输出和输出格式详解
2018/12/08 Python
Python循环中else,break和continue的用法实例详解
2019/07/11 Python
python+tkinter实现学生管理系统
2019/08/20 Python
Python 使用threading+Queue实现线程池示例
2019/12/21 Python
Python打包工具PyInstaller的安装与pycharm配置支持PyInstaller详细方法
2020/02/27 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
露营世界:Camping World
2017/02/02 全球购物
50道外企软件测试面试题
2014/08/18 面试题
天猫某品牌专卖店运营计划书
2014/03/21 职场文书
门面房租房协议书
2014/08/20 职场文书
2014年教研室工作总结
2014/12/06 职场文书
我的中国梦主题教育活动总结
2015/05/07 职场文书
阳光体育运动标语口号
2015/12/26 职场文书
python 提取html文本的方法
2021/05/20 Python