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 for Informatics 第11章之正则表达式(二)
Apr 21 Python
Python实现matplotlib显示中文的方法详解
Feb 06 Python
python实现输入数字的连续加减方法
Jun 22 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
浅谈django的render函数的参数问题
Oct 16 Python
使用Python向C语言的链接库传递数组、结构体、指针类型的数据
Jan 29 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
详解python数据结构和算法
Apr 18 Python
python实现输入的数据在地图上生成热力图效果
Dec 06 Python
tensorflow 获取checkpoint中的变量列表实例
Feb 11 Python
Django URL参数Template反向解析
Nov 24 Python
Python 制作自动化翻译工具
Apr 25 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连mysql和oracle数据库性能比较
2006/10/09 PHP
php5.2时间相差8小时
2007/01/15 PHP
php 代码优化之经典示例
2011/03/24 PHP
zf框架的数据库追踪器使用示例
2014/03/13 PHP
PHP return语句的另一个作用
2014/07/30 PHP
Windows下PHP开发环境搭建教程(Apache+PHP+MySQL)
2016/06/13 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
js 函数的副作用分析
2011/08/23 Javascript
实现点击列表弹出列表索引的两种方式
2013/03/08 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
easyui Droppable组件实现放置特效
2015/08/19 Javascript
jQuery插件实现无缝滚动特效
2015/11/24 Javascript
jQuery+CSS实现滑动的标签分栏切换效果
2015/12/17 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[32:36]完美世界DOTA2联赛PWL S3 LBZS vs CPG 第二场 12.12
2020/12/16 DOTA
Python3读取zip文件信息的方法
2015/05/22 Python
python 在屏幕上逐字显示一行字的实例
2018/12/24 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
pycharm修改file type方式
2019/11/19 Python
django admin 添加自定义链接方式
2020/03/11 Python
python实现交并比IOU教程
2020/04/16 Python
浅谈tensorflow 中的图片读取和裁剪方式
2020/06/30 Python
如何卸载python插件
2020/07/08 Python
Python+Opencv实现把图片、视频互转的示例
2020/12/17 Python
Go Plugins插件的实现方式
2021/08/07 Golang
使用JS前端技术实现静态图片局部流动效果
2022/08/05 Javascript