python删除指定路径下的空文件夹和空文件

Python批量删除空文件夹及文件
本文介绍了一个Python脚本,能够递归地清理指定路径下的所有空文件夹和空文件,适用于Windows和Linux系统。该脚本通过深度优先搜索的方式遍历整个目录结构,实现了对嵌套文件夹的有效清理。
  • 问题:想清理电脑里的某个文件夹下的空文件夹和空文件,由于大多数情况下文件夹涉及到嵌套的问题,但网上的很多代码都只能删除最底层的空文件夹,为此本人对代码进行了一些改进,实现能删除嵌套的空文件夹。
  • 适用场景:python3,windows,linux系统.windows下不建议直接输入某个磁盘名,linux下删除可能需要赋予代码权限,最好是用于清除自己熟知的目录,以免删除系统必要的文件。

目的很简单:检测给定路径下的所有文件夹和文件,并删除所有空文件夹和空文件

代码运行前后对比图:

删除前删除

具体代码如下:
# -*- coding: utf-8 -*-
import os  # 引入文件操作库

def deldir(path):
    """
    清理空文件夹和空文件
    param path: 文件路径,检查此文件路径下的子文件
    """
    print ('*'*30)
    try:
        files = os.listdir(path)  # 获取路径下的子文件(夹)列表
        print (files)
        for file in files:
            print ('遍历路径:'+os.fspath(path +'/'+ file))
            if os.path.isdir(os.fspath(path+'/'+file)):  # 如果是文件夹
                print (file+'是文件夹')
                if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                    print (file+'是空文件夹,即将执行删除操作')
                    os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹
                else:
                    print (file+'不是空文件夹')
                    deldir(os.fspath(path+'/'+file)) # 遍历子文件
                    if not os.listdir(os.fspath(path+'/'+file)):  # 如果子文件为空
                        print (file+'是空文件夹,即将执行删除操作')
                        os.rmdir(os.fspath(path+'/'+file))  # 删除这个空文件夹  
            elif os.path.isfile(os.fspath(path+'/'+file)):  # 如果是文件
                print(file+'是文件')
                if os.path.getsize(os.fspath(path+'/'+file)) == 0:  # 文件大小为0
                    print (file+'是空文件,即将执行删除操作!')
                    os.remove(os.fspath(path+'/'+file))  # 删除这个文件
        return
    except FileNotFoundError:
        print ("文件夹路径错误")

if __name__ == "__main__":  
    path = input("Please input the files path:")  # 输入路径
    deldir(path)

声明!以上内容纯属个人原创!转载请标注出处,谢谢!

如果本文有帮助到你,希望能动动小手点个赞。 如有错误请多指正!如有雷同!纯属巧合!

转载于:https://my.oschina.net/blueyuquan/blog/1587906

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值