首页 > 编程语言 >python 如何删除文件夹下的所有文件和子文件夹?

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

时间:2024-03-22 12:44:05浏览次数:35  
标签:file 删除 python 文件夹 和子 path os dir

前言

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

shutil.rmtree() 删除

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

import shutil
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


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

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

os模块递归删除

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

import os
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


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)

还有另外一种实现方式

import os
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


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 模块相关代码

from pathlib import Path
# 上海悠悠 wx:283340479
# blog:https://www.cnblogs.com/yoyoketang/


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')

标签:file,删除,python,文件夹,和子,path,os,dir
From: https://www.cnblogs.com/yoyoketang/p/18088986

相关文章

  • 3个可以免费学习Python的网站,每一个成功的Python大牛都去过!
    个可以免费学习Python的网站,每一个成功的Python大牛都去过!Python部落这个网站对Pythoner们来说还是很实用的,它有三大主要功能:学习Python、练习知识点。PS:如果你英文水平超好,还可以通过翻译技术文章赚点小钱勒~网站的左侧----我是小白,我想入门。在这里,你可以根据自己......
  • 零基础学习Python,新手都能看懂Python基础教程
    ​完成安装了Python,完成安装了PyCharm,知道Python可以做什么。无论什么都是从基础开始,python也是不例外的。要学会用一门语言,就需要了解它是由什么构成,它里面有什么。其实编程语言理论有很多都是相通,不同都是各自的差异化。Python优点有很多,缺点也是有的。**运行......
  • Python实战:打包与分发setup.py与pip
    一、引言在Python开发中,打包和分发项目是一个重要的环节。为了让其他开发者能够使用我们的项目,我们需要将项目打包成一个可安装的Python包。此外,为了方便地管理和安装Python包,Python社区开发了一个强大的包管理工具——pip。本文将详细介绍Python打包与分发的过程,包括使用s......
  • Python实战:爬虫基础与Scrapy框架入门
    1、Python爬虫基础1.1、了解网页结构在进行爬虫之前,首先需要了解网页的结构。大多数网页都是使用HTML(超文本标记语言)编写的,而现代网页通常还会使用CSS(层叠样式表)和JavaScript来增强视觉效果和交互性。HTML:网页的主要内容,包括文本、图片、链接等。CSS:用于美化HTML元素,定义......
  • Python实战:PyTorch入门
    一、引言深度学习是近年来人工智能领域的热点之一,其在图像识别、语音识别、自然语言处理等领域取得了显著的成果。Python作为一门流行的编程语言,拥有丰富的深度学习框架,其中PyTorch是近年来备受关注的一个。本文将详细介绍PyTorch的基本概念、安装方法、基础知识以及实战项......
  • python 代码练习示例
    判断数字位数##给定一个不超过5位的整数,判定该数的位数,以及依次打印,万位到个位。#接收用户输入的整数num=int(input("请输入一个小于等于5位数的整数:"))#将整数转换为字符串,计算整数的位数num_str=str(num)length=len(num_str)iflength>5:print("输入......
  • python把html渲染成带格式的文本
    在Python中,可以使用html2text库将HTML内容转换成纯文本,保留一定的格式。首先需要安装这个库:pipinstallhtml2text然后使用它的html2text函数将HTML转换为Markdown格式的文本:importhtml2text#示例HTML内容html_content="""<h1>标题</h1><p>这是一个段落。</p><ul>......
  • 减少循环嵌套,提升代码运行速度!你不知道的3个实用Python函数(转)
    原文地址(https://zhuanlan.zhihu.com/p/114787201)作为21世纪最流行的语言之一,Python有很多有趣的功能值得深入探索和研究。今天将讨论其中的三个你可能没听说过的函数,将从理论和实际应用两方面为你详细讲解。我之所以要讨论这些函数,主要是因为它们可以帮助你避免陷入编写循环中......
  • 看完本文若不能让你学通“Python”,我将永远退出IT界
    0基础小白怎么学Python?今天给大家分享一些学习Python的基本概念图,入门书籍、视频教程以及学习路上最有效的方法。Python基本概念最全图1.Python解释器:2.Python数据结构:3.变量与运算符:4.Python流程控制:5.Python文件处理:6.Python输入输出:7.Python异常:8......
  • (41/60)0-1背包(二维数组、一维数组)、分割等和子集
    有点抽象0-1背包卡码网:携带研究材料(第六期模拟笔试)动态规划思路二维:意义:0~i物品内,放进容量为j的背包,最大价值为dp[i][j]递推:dp[i][j]=max(dp[i-1][j-weight[i],dp[i-1][j])初始化:第一列为0,第一行j>=weight[0]时赋值为value[0]遍历:先背包再物品/先物品再背包均可(......