Ответ 1
Если noob является каталогом, функция shutil.rmtree()
удалит noob
и все файлы и подкаталоги под ним. То есть noob
- это корень дерева, которое нужно удалить.
Я прочитал документ о этой функции, однако, я не думаю, что понимаю это правильно, и если кто-нибудь скажет мне, что я думаю неправильно, или если я прав, это будет большой помощью. Вот мое понимание:
используя функцию shutil.rmtree(path)
, она удалит только указанный каталог, а не весь путь. IE:
shutil.rmtree('user/tester/noob')
используя это, он только удалит каталог "noob" правильно? не полный путь?
Если noob является каталогом, функция shutil.rmtree()
удалит noob
и все файлы и подкаталоги под ним. То есть noob
- это корень дерева, которое нужно удалить.
Это, безусловно, удалит только последний каталог по указанному пути. Просто попробуйте:
mkdir -p foo/bar
python
import shutil
shutil.rmtree('foo/bar')
... удалит только 'bar'
.
Здесь есть некоторые недоразумения.
Представьте себе такое дерево:
- user
- tester
- noob
- developer
- guru
Если вы хотите удалить user
, просто сделайте shutil.rmtree('user')
. Это также удалит user/tester
и user/tester/noob
, поскольку они находятся внутри user
. Однако он также удалит user/developer
и user/developer/guru
, так как они также находятся внутри user
.
Если rmtree('user/tester/noob')
удалит user
и tester
, как вы думаете, user/developer
будет существовать, если user
ушел?
Или вы имеете в виду что-то вроде http://docs.python.org/2/library/os.html#os.removedirs?
Он пытается удалить родительский элемент каждого удаленного каталога до тех пор, пока он не завершится с ошибкой, потому что каталог не пуст. Итак, в моем дереве примеров os.removedirs('user/tester/noob')
удалит первый noob
, тогда он попытается удалить tester
, что нормально, потому что он пуст, но он остановится на user
и оставьте его в покое, поскольку он содержит developer
, который мы не хотим удалять.