Python:删除非空目录

119

如何在Python中删除可能非空的目录。

该目录可能有多层嵌套子目录。

3个回答

189

使用shutil.rmtree函数:

import shutil

shutil.rmtree(path)

查看文档以获取如何处理和/或忽略错误的详细信息。


92
标准库中包含了shutil.rmtree来实现这个功能。默认情况下,
shutil.rmtree(path)  # errors if dir not empty

将会返回 OSError: [Errno 66] 目录不为空: <your/path>
无论如何,您可以通过忽略错误来删除该目录及其内容。
shutil.rmtree(role_fs_path, ignore_errors=True)

你可以通过传递onerror=<some function(function, path, excinfo)>来执行更复杂的错误处理。

29
ignore_errors=True表示不会删除该目录。 - ostrokach
2
ignore_errors=True 是一个选项。 - Marc Condon
8
哦,太糟糕的参数名称了:( - IlliakaillI
2
shutil.rmtree(path)在Python 3.8中如果目录为空将不会报错,因此这可能与您6年前发布的内容有所不同。只是想为现在查看此内容的其他人更新一下。 - wheeleruniverse
如果目录非空(shutil.rmtree(path))不会报错(Python 3.7.9)。 - Max Segal

12

您需要使用shutil.rmtree

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

删除整个目录树;path必须指向一个目录(但不能是指向目录的符号链接)。如果ignore_errors为true,则忽略由于删除失败而导致的错误;如果为false或省略,则通过调用onerror指定的处理程序来处理这些错误,如果省略,则会引发异常。

注:shutil.rmtree()是Python中的一个模块,它提供了一种删除文件和目录的简便方法。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接