2024-05-23 21:36:09 发布
网友
我已经阅读了这个函数的文档,但是,我认为我没有正确理解它。如果有人能告诉我我错过了什么,或者如果我是对的,那将是一个很大的帮助。我的理解是:
使用shutil.rmtree(path)函数,它将只删除指定的目录,而不是整个路径。即:
shutil.rmtree(path)
shutil.rmtree('user/tester/noob')
使用这个,它只会删除'noob'目录对吗?不是完整的路径?
这肯定只会删除指定路径中的最后一个目录。 试试看:
mkdir -p foo/bar python import shutil shutil.rmtree('foo/bar')
…将只删除'bar'。
'bar'
这里有些误会。
想象一下这样一棵树:
- user - tester - noob - developer - guru
如果要删除user,只需执行shutil.rmtree('user')。这也将删除user/tester和user/tester/noob,因为它们在user中。但是,它也将删除user/developer和user/developer/guru,因为它们也在user内部。
user
shutil.rmtree('user')
user/tester
user/tester/noob
user/developer
user/developer/guru
如果rmtree('user/tester/noob')会删除user和tester,那么如果user消失了,你怎么说user/developer会存在?
rmtree('user/tester/noob')
tester
或者你的意思是http://docs.python.org/2/library/os.html#os.removedirs?
它尝试删除每个已删除目录的父目录,直到失败,因为该目录不是空的。所以在我的示例树中,os.removedirs('user/tester/noob')将首先删除noob,然后它将尝试删除tester,这是可以的,因为它是空的,但是它将在user处停止,并将其单独保留,因为它包含developer,我们不想删除它。
os.removedirs('user/tester/noob')
noob
developer
如果noob是一个目录,shutil.rmtree()函数将删除noob及其下的所有文件和子目录。也就是说,noob是要删除的树的根。
shutil.rmtree()
这肯定只会删除指定路径中的最后一个目录。 试试看:
…将只删除
'bar'
。这里有些误会。
想象一下这样一棵树:
如果要删除
user
,只需执行shutil.rmtree('user')
。这也将删除user/tester
和user/tester/noob
,因为它们在user
中。但是,它也将删除user/developer
和user/developer/guru
,因为它们也在user
内部。如果
rmtree('user/tester/noob')
会删除user
和tester
,那么如果user
消失了,你怎么说user/developer
会存在?或者你的意思是http://docs.python.org/2/library/os.html#os.removedirs?
它尝试删除每个已删除目录的父目录,直到失败,因为该目录不是空的。所以在我的示例树中,
os.removedirs('user/tester/noob')
将首先删除noob
,然后它将尝试删除tester
,这是可以的,因为它是空的,但是它将在user
处停止,并将其单独保留,因为它包含developer
,我们不想删除它。如果noob是一个目录,
shutil.rmtree()
函数将删除noob
及其下的所有文件和子目录。也就是说,noob
是要删除的树的根。相关问题 更多 >
编程相关推荐