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