有一个python相当于"rm -rf"?

use*_*103 1 python

我想删除一个文件夹,如果已经存在,有关如何删除目录的任何输入,如果它存在吗?是否有一个python等效的"rm -rf"?

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

Joh*_*ooy 6

您可以使用shutil.rmtree

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

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

如果提供了onerror,则它必须是可调用的,它接受三个参数:function,path和excinfo.第一个参数function是引发异常的函数; 它将是os.path.islink(),os.listdir(),os.remove()或os.rmdir().第二个参数path是传递给function的路径名.第三个参数excinfo将是sys.exc_info()返回的异常信息.恐怖主义引发的例外情况不会被发现.

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

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

  • 注意:rm -fr _path_ 并不严格等同于shutil.rmtree("_path_", ignore_errors = True)。rm -fr 将删除只读文件,rmtree 不会。我在 windows 10 python 2.7.15 上发现了这个 (2认同)