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之使用Python查询更新数据库
Nov 25 Python
使用Python实现下载网易云音乐的高清MV
Mar 16 Python
python使用socket连接远程服务器的方法
Apr 29 Python
Python实现的维尼吉亚密码算法示例
Apr 12 Python
Python实现的简单线性回归算法实例分析
Dec 26 Python
浅谈python中get pass用法
Mar 19 Python
将python安装信息加入注册表的示例
Nov 20 Python
PyQt5多线程刷新界面防假死示例
Dec 13 Python
解决Python图形界面中设置尺寸的问题
Mar 05 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
Apr 27 Python
Python发送邮件实现基础解析
Aug 14 Python
Python基于百度AI实现抓取表情包
Jun 27 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 日期加减的类,很不错
2009/10/10 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
PHP中使用php://input处理相同name值的表单数据
2015/02/03 PHP
PHP列出MySQL中所有数据库的方法
2015/03/12 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
js 鼠标点击事件及其它捕获
2009/06/04 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
js触发onchange事件的方法说明
2014/03/08 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
js获取上传文件的绝对路径实现方法
2016/08/02 Javascript
JS碰撞运动实现方法详解
2016/12/15 Javascript
Vue-cli proxyTable 解决开发环境的跨域问题详解
2017/05/18 Javascript
详解Vue.js Mixins 混入使用
2017/09/15 Javascript
vue在使用ECharts时的异步更新和数据加载详解
2017/11/22 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
小程序实现列表点赞功能
2018/11/02 Javascript
举例讲解Python面相对象编程中对象的属性与类的方法
2016/01/19 Python
Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
2017/08/23 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
python使用phoenixdb操作hbase的方法示例
2019/02/28 Python
Django模型中字段属性choice使用说明
2020/03/30 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
css3编写浏览器背景渐变背景色的方法
2018/03/05 HTML / CSS
HTML5+css3:3D旋转木马效果相册
2017/01/03 HTML / CSS
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
毕业生大学生活自我总结
2014/01/31 职场文书
小学二年级学生评语
2014/04/21 职场文书
民主生活会发言材料
2014/10/20 职场文书
2015年企业团支部工作总结
2015/05/21 职场文书
农村结婚典礼主持词
2015/06/29 职场文书
保姆聘用合同
2015/09/21 职场文书
js基础语法与maven项目配置教程案例
2021/07/15 Javascript