Страницы

Поиск по вопросам

пятница, 19 апреля 2019 г.

Удаление пустых папок

Задача - удалить пустые папки. Код внизу удаляет только последнюю папку и отключается. Но, после удаления последней папки, папка, в которой она находилась тоже становится пустой. Как заставить скрипт после удаления последней папки проверять ту папку, из которой он удалил последнюю и удалял ее?
def del_empty_dirs(path): for d in os.listdir(path): a = os.path.join(path, d) if os.path.isdir(a): if not os.listdir(a): os.rmdir(a) print(a, 'удалена') else: del_empty_dirs(a)


Ответ

Вам нужен поиск в глубину.. Сначала углубляемся в рекурсию, только потом что-то проверяем/удаляем:
def del_empty_dirs(path): for d in os.listdir(path): a = os.path.join(path, d) if os.path.isdir(a): del_empty_dirs(a) if not os.listdir(a): os.rmdir(a) print(a, 'удалена')
Таким образом, мы гарантируем, что по выходу из рекурсивного вызова - все дочерние папки уже обработаны.

Комментариев нет:

Отправить комментарий