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中Continue语句的用法的举例详解
May 14 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python 将大文件切分为多个小文件的实例
Jan 14 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
Jul 15 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
Oct 23 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
opencv+python实现均值滤波
Feb 19 Python
python 判断txt每行内容中是否包含子串并重新写入保存的实例
Mar 12 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
python基于openpyxl生成excel文件
Dec 23 Python
numba提升python运行速度的实例方法
Jan 25 Python
PyQt5 QThread倒计时功能的实现代码
Apr 02 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
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php动态添加url查询参数的方法
2015/04/14 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
prototype class详解
2006/09/07 Javascript
关于Javascript 的 prototype问题。
2007/01/03 Javascript
AJAX使用了UpdatePanel后无法使用alert弹出脚本
2010/04/02 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
2016/04/07 Javascript
jQuery ajax中使用confirm,确认是否删除的简单实例
2016/06/17 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
BootStrap Fileinput上传插件使用实例代码
2017/07/28 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
深入浅析Vue 中 ref 的使用
2019/04/29 Javascript
python中管道用法入门实例
2015/06/04 Python
Android 兼容性问题:java.lang.UnsupportedOperationException解决办法
2017/03/19 Python
Python使用内置json模块解析json格式数据的方法
2017/07/20 Python
python调用API实现智能回复机器人
2018/04/10 Python
python基于http下载视频或音频
2018/06/20 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
ansible动态Inventory主机清单配置遇到的坑
2020/01/19 Python
详解使用python3.7配置开发钉钉群自定义机器人(2020年新版攻略)
2020/04/01 Python
详解Canvas实用库Fabric.js使用手册
2019/01/07 HTML / CSS
Oakley官网:运动太阳镜、雪镜和服装
2016/09/30 全球购物
俄语地区最大的中国商品在线购物网站之一:Umka Mall
2019/11/03 全球购物
Oracle里面常用的数据字典有哪些
2014/02/14 面试题
韩语专业本科生求职信
2013/10/01 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
公司开业致辞
2015/07/29 职场文书
python中的装饰器该如何使用
2021/06/18 Python
Windows7下FTP搭建图文教程
2022/08/05 Servers