Python 遞歸刪除目錄下所有的空文件夾

上週因工作需要,需要刪除4000多個空文件夾,而且還有很多子文件夾嵌套的那種,裏面有文件的文件夾,有空的的文件夾。因爲時間緊急。我在網上搜了一段bat代碼。執行效率太慢,而且是不一次就能刪除完,需要跑好多次,把我着急的呀。

貼上bat代碼:

@echo off
echo.
echo ....kaishi..
echo -------------------------------------------------------------
cd. > listnull.txt
for /f "delims=" %%i in ('dir /ad /b /s') do (
dir /b "%%i" | findstr .>nul || echo %%i >> listnull.txt
)
set /a sum=0
for /f "tokens=*" %%i in (listnull.txt) do (
rd /q "%%i"
echo deleter:%%i
set /a sum=sum+1
)
echo -------------------------------------------------------------
echo 共成功刪除%cd%目錄及其子目錄下%sum%個空文件夾!
echo.
set sum=
o.
set sum=
目錄及其子目錄下%sum%個空文件夾!
echo.
set sum=

可能我找的這個不是最有效的方法,如果哪位大神能知道有更好的辦法請分享一下。共同學習。共同成長。
好了,廢話不多說上代碼:

#coding=utf-8
import os
import time
NUM_COUNT = 0
def delete_gap_dir(dir):
	if os.path.isdir(dir):
		for d in os.listdir(dir):
			delete_gap_dir(os.path.join(dir, d))
		if not os.listdir(dir):
			os.rmdir(dir)
			global NUM_COUNT
			NUM_COUNT = NUM_COUNT + 1
			print('移除空目錄: ' + dir)

time1 = time.time()
delete_gap_dir(os.getcwd())
time2 = time.time() - time1
print('用時:',time2,‘ s ’)
print('刪除文件夾個數:',NUM_COUNT)
print('刪除完畢')
input('請按任意鍵退出')

解釋一下用到的函數:

  1. os.path.isdir() #判斷是否爲目錄
  2. os.path.join(dirname, filename) #鏈接目錄與文件名
  3. os.rmdir() #刪除path指定的空目錄,如果目錄非空,則拋出一個OSError異常。
  4. os.getcwd() #獲取當前路徑
  5. time.time() #獲取當前時間戳
  6. global NUM_COUNT #全局變量在子方法中使用的話需要這樣聲明一下

更多關於os文件,文件夾的操作請移步菜鳥教程-Python3 OS 文件/目錄方法
謹慎使用此代碼,誤刪不負責

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章