python 如何删除文件夹下的所有文件和子文件夹?

2547 篇文章 2 订阅
2384 篇文章 14 订阅

2024软件测试面试刷题,这个小程序(永久刷题),靠它快速找到工作了!(刷题APP的天花板)_软件测试刷题小程序-CSDN博客文章浏览阅读3k次,点赞85次,收藏12次。你知不知道有这么一个软件测试面试的刷题小程序。里面包含了面试常问的软件测试基础题,web自动化测试、app自动化测试、接口测试、性能测试、自动化测试、安全测试及一些常问到的人力资源题目。最主要的是他还收集了像阿里、华为这样的大厂面试真题,还有互动交流板块……_软件测试刷题小程序​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502​编辑https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502icon-default.png?t=N7T8https://blog.csdn.net/AI_Green/article/details/134931243?spm=1001.2014.3001.5502

前言

删除文件夹下的所有的文件,以及子文件下所有的文件,把这个文件夹全部删除。

shutil.rmtree() 删除

先介绍一个最简单的方法,shutil.rmtree()

shutil.rmtree('D:\\test', ignore_errors=True)

删除 D:\test 目录下全部文件,并且忽略错误

os模块递归删除

可以通过os模块,自己写个递归删除

def delete_dir_file(dir_path):
    """
    递归删除文件夹下文件和子文件夹里的文件,不会删除空文件夹
    :param dir_path: 文件夹路径
    :return:
    """
    if not os.path.exists(dir_path):
        return
    # 判断是不是一个文件路径,并且存在
    if os.path.isfile(dir_path) and os.path.exists(dir_path):
        os.remove(dir_path)  # 删除单个文件
    else:
        file_list = os.listdir(dir_path)
        for file_name in file_list:
            delete_dir_file(os.path.join(dir_path, file_name))
    # 递归删除空文件夹
    if os.path.exists(dir_path):
        os.rmdir(dir_path)


if __name__ == '__main__':
    delete_dir_file('./data')

上面代码删除的时候,如果想保留我们文件夹以及子文件夹,仅仅只删除文件,可以去掉这句

    # 递归删除空文件夹
    if os.path.exists(dir_path):
        os.rmdir(dir_path)

还有另外一种实现方式

def delete_dir2(dir_path):

    # os.walk会得到dir_path下各个后代文件夹和其中的文件的三元组列表
    for root, dirs, files in os.walk(dir_path, topdown=False):
        print(root)  # 文件夹绝对路径
        print(dirs)  # root下一级文件夹名称列表,如 ['文件夹1','文件夹2']
        print(files)  # root下文件名列表,如 ['文件1.xx','文件2.xx']
        # 第一步:删除文件
        for name in files:
            os.remove(os.path.join(root, name))  # 删除文件
        # 第二步:删除空文件夹
        for name in dirs:
            os.rmdir(os.path.join(root, name))  # 删除一个空目录

    # 加这段代码,最外层文件夹也一起删除
    if os.path.exists(dir_path):
        os.rmdir(dir_path)


delete_dir2('data')

如果需要把最外层目录一起删除,可以加上这句

    # 加这段代码,最外层文件夹也一起删除
    if os.path.exists(dir_path):
        os.rmdir(dir_path)

使用 pathlib 模块实现

os模块现在很少用了,用 pathlib 模块替换os 模块相关代码

def delete_dir_file(dir_path):
    """
    递归删除文件夹下文件和子文件夹里的文件,不会删除空文件夹
    :param dir_path: 文件夹路径
    :return:
    """
    p = Path(dir_path)
    if not p.exists():
        return
    # 判断是不是一个文件路径,并且存在
    if p.is_file() and p.exists():
        p.unlink()  # 删除单个文件
    else:
        for file_name in p.iterdir():
            # 递归删除文件
            delete_dir_file(file_name)
    # 递归删除空文件夹
    if p.exists():
        p.rmdir()


if __name__ == '__main__':
    delete_dir_file('./data')

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 759968159,里面有各种测试开发资料和技术可以一起交流哦。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值