python: 删除非空目录

119 投票
3 回答
141404 浏览
提问于 2025-04-15 15:01

我该如何在Python中删除一个可能不为空的文件夹。

这个文件夹里面可能还有很多层的子文件夹。

3 个回答

12

你需要用到 shutil.rmtree 这个功能。

shutil.rmtree(path[, ignore_errors[, onerror]])

这个功能可以删除一个完整的文件夹,路径(path)必须指向一个文件夹(而不是指向文件夹的快捷方式)。如果你把ignore_errors设置为真,删除失败时产生的错误会被忽略;如果设置为假或者不设置,错误会通过一个你指定的处理函数来处理,如果你也不指定处理函数,就会抛出一个异常。

92

标准库里有一个功能叫做 shutil.rmtree,可以用来删除文件夹及其内容。默认情况下,

shutil.rmtree(path)  # errors if dir not empty

如果你试图删除一个不空的文件夹,会出现这样的错误:OSError: [Errno 66] Directory not empty: <your/path>

不过,你可以选择忽略这个错误,继续删除文件夹和里面的东西:

shutil.rmtree(role_fs_path, ignore_errors=True)

如果你想处理错误得更复杂一些,可以传入 onerror=<某个函数(function, path, excinfo)> 来处理错误。

189

使用 shutil.rmtree

import shutil

shutil.rmtree(path)

想了解如何处理或忽略错误,可以查看 文档

撰写回答