python:删除非空目录

fly*_*ire 55 python file

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

该目录可能具有许多级别的嵌套子目录.

Ric*_*dle 90

用途shutil.rmtree:

import shutil

shutil.rmtree(path)
Run Code Online (Sandbox Code Playgroud)

有关如何处理和/或忽略错误的详细信息,请参阅文档.


dgh*_*dgh 60

标准库包含shutil.rmtree.默认情况下,

shutil.rmtree(path)  # errors if dir not empty
Run Code Online (Sandbox Code Playgroud)

会给OSError: [Errno 66] Directory not empty: <your/path>.

您可以通过忽略错误来删除目录及其内容:

shutil.rmtree(role_fs_path, ignore_errors=True)
Run Code Online (Sandbox Code Playgroud)

您也可以通过传递来执行更复杂的错误处理onerrror=<some function(function, path, excinfo)>.

  • `ignore_errors = True`表示它不会删除目录. (13认同)
  • 哦不,参数的名字真是太糟糕了:( (5认同)
  • ignore_errors = True是tickket (2认同)
  • 如果 python 3.8 中的目录为空,shutil.rmtree(path) 不会给出错误,因此自您 6 年前发布以来,这可能会发生变化。只是想为其他现在正在查看此内容的人进行更新。 (2认同)

And*_*lke 10

你想要shutil.rmtree

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

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