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共享引用(多个变量引用)示例代码
Dec 04 Python
python线程锁(thread)学习示例
Dec 04 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Python http接口自动化测试框架实现方法示例
Dec 06 Python
Python3.5常见内置方法参数用法实例详解
Apr 29 Python
python 对字典按照value进行排序的方法
May 09 Python
Python处理时间日期坐标轴过程详解
Jun 25 Python
python实现两个文件夹的同步
Aug 29 Python
Python3 实现减少可调用对象的参数个数
Dec 20 Python
基于python实现破解滑动验证码过程解析
May 28 Python
MoviePy常用剪辑类及Python视频剪辑自动化
Dec 18 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 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
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
php session 错误
2009/05/21 PHP
在WAMP环境下搭建ZendDebugger php调试工具的方法
2011/07/18 PHP
PHP防止表单重复提交的几种常用方法汇总
2014/08/19 PHP
VPS中使用LNMP安装WordPress教程
2014/12/28 PHP
Docker 如何布置PHP开发环境
2016/06/21 PHP
基于Asp.net与Javascript控制的日期控件
2010/05/22 Javascript
11款新鲜的jQuery插件[附所有demo下载]
2011/01/24 Javascript
javascript针对DOM的应用分析(二)
2012/04/15 Javascript
MultiSelect左右选择控件的设计与实现介绍
2013/06/08 Javascript
AngularJS基础学习笔记之指令
2015/05/10 Javascript
javascript实时显示当天日期的方法
2015/05/20 Javascript
全面了解构造函数继承关键apply call
2016/07/26 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
jquery 通过ajax请求获取后台数据显示在表格上的方法
2018/08/08 jQuery
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
JavaScript自动生成 年月范围 选择功能完整示例【基于jQuery插件】
2019/09/03 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
[01:54]TI4西雅图DOTA2选手欢迎晚宴 现场报道
2014/07/08 DOTA
Python中函数的参数定义和可变参数用法实例分析
2015/06/04 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
详解Python安装tesserocr遇到的各种问题及解决办法
2019/03/07 Python
Windows平台Python编程必会模块之pywin32介绍
2019/10/01 Python
Python cookie的保存与读取、SSL讲解
2020/02/17 Python
Python decimal模块使用方法详解
2020/06/08 Python
将tf.batch_matmul替换成tf.matmul的实现
2020/06/18 Python
HTML5 本地存储之如果没有数据库究竟会怎样
2013/04/25 HTML / CSS
手对手的教你用canvas画一个简单的海报的方法示例
2018/12/10 HTML / CSS
中学教师实习自我鉴定
2013/09/28 职场文书
还款承诺书范文
2014/05/20 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
个人授权委托书模板
2014/09/14 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
广播体操比赛主持词
2015/06/29 职场文书
寒假生活随笔
2015/08/15 职场文书
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS