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