python: 删除非空目录
我该如何在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