Страницы

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

понедельник, 10 февраля 2020 г.

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

#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, 'удалена') Таким образом, мы гарантируем, что по выходу из рекурсивного вызова - все дочерние папки уже обработаны.

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

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