#python
Задача - удалить пустые папки. Код внизу удаляет только последнюю папку и отключается. Но, после удаления последней папки, папка, в которой она находилась тоже становится пустой. Как заставить скрипт после удаления последней папки проверять ту папку, из которой он удалил последнюю и удалял ее? 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)
Ответы
Ответ 1
Вам нужен поиск в глубину.. Сначала углубляемся в рекурсию, только потом что-то проверяем/удаляем: 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, 'удалена') Таким образом, мы гарантируем, что по выходу из рекурсивного вызова - все дочерние папки уже обработаны.
Комментариев нет:
Отправить комментарий