Подтвердить что ты не робот

Очистить

Я прочитал документ о этой функции, однако, я не думаю, что понимаю это правильно, и если кто-нибудь скажет мне, что я думаю неправильно, или если я прав, это будет большой помощью. Вот мое понимание:

используя функцию shutil.rmtree(path), она удалит только указанный каталог, а не весь путь. IE:

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

используя это, он только удалит каталог "noob" правильно? не полный путь?

4b9b3361

Ответ 1

Если noob является каталогом, функция shutil.rmtree() удалит noob и все файлы и подкаталоги под ним. То есть noob - это корень дерева, которое нужно удалить.

Ответ 2

Это, безусловно, удалит только последний каталог по указанному пути. Просто попробуйте:

mkdir -p foo/bar
python
import shutil
shutil.rmtree('foo/bar')

... удалит только 'bar'.

Ответ 3

Здесь есть некоторые недоразумения.

Представьте себе такое дерево:

 - 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, который мы не хотим удалять.