1

如果已经存在,我想删除一个文件夹,关于如何删除一个目录(如果它存在)的任何输入?是否有一个相当于“rm -rf”的python?

如果 os.path.isdir('./.repo'): shutil.rmtree('./.repo')

4

1 回答 1

8

您可以使用shutil.rmtree

shutil.rmtree(路径[, ignore_errors[, onerror]])

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

如果提供了 onerror,它必须是一个接受三个参数的可调用对象:函数、路径和 excinfo。第一个参数 function 是引发异常的函数;它将是 os.path.islink()、os.listdir()、os.remove() 或 os.rmdir()。第二个参数 path 将是传递给函数的路径名。第三个参数 excinfo 将是 sys.exc_info() 返回的异常信息。不会捕获由 onerror 引发的异常。

在 2.6 版更改:显式检查路径是否为符号链接并在这种情况下引发 OSError。

注意: rm -fr path 并不严格等同于 shutil.rmtree("path", ignore_errors = True)。rm -fr 将删除只读文件, rmtree 不会。(见下面@Richard 的评论)

于 2013-07-09T23:59:32.040 回答