首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >shutil.rmtree()澄清

shutil.rmtree()澄清
EN

Stack Overflow用户
提问于 2012-06-04 03:40:44
回答 4查看 82.1K关注 0票数 54

我已经阅读了这个函数的文档,但是,我想我没有正确地理解它。如果有人能告诉我我遗漏了什么,或者如果我是正确的,那将是一个很大的帮助。以下是我的理解:

使用shutil.rmtree(path)函数,它将只删除指定的目录,而不是整个路径。即:

shutil.rmtree('user/tester/noob')

使用这个,它只会删除'noob‘目录,对吗?不是完整的路径?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-06-04 04:01:00

如果noob是一个目录,shutil.rmtree()函数将删除noob及其下的所有文件和子目录。也就是说,noob是要删除的树的根。

票数 76
EN

Stack Overflow用户

发布于 2012-06-04 03:58:47

这肯定只会删除指定路径中的最后一个目录。试试看吧:

代码语言:javascript
复制
mkdir -p foo/bar
python
import shutil
shutil.rmtree('foo/bar')

...will仅删除'bar'

票数 31
EN

Stack Overflow用户

发布于 2013-11-11 17:31:25

这里有一些误解。

想象一下这样一棵树:

代码语言:javascript
复制
 - user
   - tester
     - noob
   - developer
     - guru

如果您想删除user,只需执行shutil.rmtree('user')即可。这还将删除user/testeruser/tester/noob,因为它们在user中。但是,它也会删除user/developeruser/developer/guru,因为它们也在user中。

如果rmtree('user/tester/noob')会删除usertester,如果user消失了,你的意思是user/developer还会存在吗?

或者你指的是像http://docs.python.org/2/library/os.html#os.removedirs这样的东西?

它会尝试删除每个已删除目录的父目录,直到因为该目录不为空而失败。因此,在我的示例树中,os.removedirs('user/tester/noob')将首先删除noob,然后尝试删除tester,这是可以的,因为它是空的,但它会停在user处,不管它,因为它包含我们不想删除的developer

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10873364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档