国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python中使用glob和rmtree刪除目錄子目錄及所有文件的例子

2019-11-25 18:04:48
字體:
來源:轉載
供稿:網友

一、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,該方法返回所有匹配的文件路徑列表,該方法需要一個參數用來指定匹配的路徑字符串(本字符串可以為絕對路徑也可以為相對路徑),其返回的文件名只包括當前目錄里的文件名,不包括子文件夾里的文件。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富锦市| 盐城市| 芦溪县| 嘉善县| 顺平县| 棋牌| 新郑市| 通州区| 韶山市| 清河县| 丰顺县| 开鲁县| 绥宁县| 阜新市| 内江市| 曲阜市| 祥云县| 临泉县| 车致| 平湖市| 华蓥市| 大连市| 泽库县| 香河县| 广宗县| 定州市| 惠水县| 石城县| 彰武县| 弋阳县| 佳木斯市| 乌审旗| 津市市| 都江堰市| 油尖旺区| 根河市| 桐庐县| 中宁县| 大悟县| 芮城县| 芜湖市|