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 文件/目录方法
谨慎使用此代码,误删不负责

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