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去掉行尾的换行符方法
Jan 04 Python
Python3 Random模块代码详解
Dec 04 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
django项目简单调取百度翻译接口的方法
Aug 06 Python
Python Lambda函数使用总结详解
Dec 11 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
Dec 31 Python
Pytorch 实现权重初始化
Dec 31 Python
pycharm安装及如何导入numpy
Apr 03 Python
python操作yaml说明
Apr 08 Python
Python3操作读写CSV文件使用包过程解析
Apr 10 Python
python3 通过 pybind11 使用Eigen加速代码的步骤详解
Dec 07 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基础知识回顾
2012/08/16 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
2014/05/04 PHP
ExtJS 下拉多选框lovcombo
2010/05/19 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖放商品放置购物车
2015/11/30 Javascript
动态创建按钮的JavaScript代码
2016/01/29 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
Angular实现购物车计算示例代码
2017/02/21 Javascript
JS数组去重(4种方法)
2017/03/27 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
jQuery实现的电子时钟效果完整示例
2018/04/28 jQuery
node上的redis调用优化示例详解
2018/10/30 Javascript
微信小程序自定义toast的实现代码
2018/11/16 Javascript
跟老齐学Python之玩转字符串(2)
2014/09/14 Python
用 Python 爬了爬自己的微信朋友(实例讲解)
2017/08/25 Python
Python 文件操作的详解及实例
2017/09/18 Python
python在html中插入简单的代码并加上时间戳的方法
2018/10/16 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python Tcp协议发送和接收信息的例子
2019/07/22 Python
tensorflow没有output结点,存储成pb文件的例子
2020/01/04 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
万得城电器土耳其网站:欧洲第一大电子产品零售商
2016/10/07 全球购物
介绍一下Python中webbrowser的用法
2013/05/07 面试题
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
任课老师推荐信范文
2013/11/24 职场文书
教师个人事迹材料
2014/12/17 职场文书
自荐信格式模板
2015/03/27 职场文书
背起爸爸上学观后感
2015/06/08 职场文书
JavaScript使用canvas绘制坐标和线
2021/04/28 Javascript
Netty客户端接入流程NioSocketChannel创建解析
2022/03/25 Java/Android
SQL Server中的游标介绍
2022/05/20 SQL Server