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的Flask框架中验证注册用户的Email的方法
Sep 02 Python
Python多进程同步简单实现代码
Apr 27 Python
深入理解 Python 中的多线程 新手必看
Nov 20 Python
详谈Numpy中数组重塑、合并与拆分方法
Apr 17 Python
python语音识别实践之百度语音API
Aug 30 Python
python求解数组中两个字符串的最小距离
Sep 27 Python
python实现对指定字符串补足固定长度倍数截断输出的方法
Nov 15 Python
python dataframe向下向上填充,fillna和ffill的方法
Nov 28 Python
PyQt5 QTable插入图片并动态更新的实例
Jun 18 Python
python高阶函数map()和reduce()实例解析
Mar 16 Python
Python环境使用OpenCV检测人脸实现教程
Oct 19 Python
详解解决jupyter不能使用pytorch的问题
Feb 18 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实现定时执行任务的方法
2014/10/05 PHP
Symfony2在Nginx下的配置方法图文教程
2016/02/04 PHP
php四种定界符详解
2017/02/16 PHP
PHP数组遍历的几种常见方式总结
2019/02/15 PHP
php中yar框架实例用法讲解
2020/12/27 PHP
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
2014/06/22 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
全面理解JavaScript中的闭包
2016/05/12 Javascript
jQuery复制节点用法示例(clone方法)
2016/09/08 Javascript
JavaScript之排序函数_动力节点Java学院整理
2017/06/30 Javascript
JavaScript截屏功能的实现代码
2017/07/28 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
原生JS实现旋转轮播图+文字内容切换效果【附源码】
2018/09/29 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
2019/03/13 Javascript
Vue CLI3中使用compass normalize的方法
2019/05/30 Javascript
javascript sort()对数组中的元素进行排序详解
2019/10/13 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
vue quill editor 使用富文本添加上传音频功能
2020/01/14 Javascript
基于vue实现探探滑动组件功能
2020/05/29 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
Python中static相关知识小结
2018/01/02 Python
利用Pandas读取文件路径或文件名称包含中文的csv文件方法
2018/07/04 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
Pytorch抽取网络层的Feature Map(Vgg)实例
2019/08/20 Python
Python turtle库绘制菱形的3种方式小结
2019/11/23 Python
Python数组并集交集补集代码实例
2020/02/18 Python
Python sqlalchemy时间戳及密码管理实现代码详解
2020/08/01 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
h5页面背景图很长要有滚动条滑动效果的实现
2021/01/27 HTML / CSS
党校培训思想汇报
2014/01/03 职场文书
党性分析材料格式
2014/12/19 职场文书
运动会闭幕词
2015/01/28 职场文书
Python Django框架介绍之模板标签及模板的继承
2021/05/27 Python
Nginx下SSL证书安装部署步骤介绍
2021/12/06 Servers