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

前言

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

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

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

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值