shutil.rmtree() разъяснения
Я прочитал doc на этой функции, однако, я не думаю,что я понимаю это правильно, и если кто-нибудь может сказать мне, что я думаю неправильно, или если я прав, это было бы большой помощью. Вот мое понимание:
С помощью shutil.rmtree(path)
функция, она удалит только указанный каталог, а не весь путь. Т. е.:
shutil.rmtree('user/tester/noob')
используя это, он удалит только каталог "noob" правильно? не полный путь?
3 ответов
Если noob является каталогом, то удалить 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
, которые мы не хотим удалять.