Как вычислить самые последние подпапки?
Есть структура каталогов. Любая. В ней где то 3-4 уровня вложенности. Именно 3-4, т.е. где то 3, где то 4.
Нужно как то бахнуть действия с подпапкой именно там, где уже дальше подпапок нету. Т.е. только с теми подпапками, которые содержат только файлы.
Сейчас нарисовал себе вот такого монстра, который вроде как работает:
for root, dirs, files in os.walk(folder_path, topdown=False):
for name in dirs:
sub_folder_path = os.path.join(root, name)
for sub_root, sub_dirs, sub_files in os.walk(sub_folder_path, topdown=False):
len_sub_dirs = len(sub_dirs)
if not len_sub_dirs:
print(sub_folder_path)
Пробовал гуглить - найти какую то простую проверку не удалось... Есть ли вариант оформить это как то проще? Заменить нижний for на что то попроще? Мне и количество то по идее не нужно, нужен сам факт - есть ли там хоть одна подпапка, или только файлы.
Ответы (1 шт):
Ты будешь долго смеяться, но ты уже написал готовое решение =)
Просто немного неправильно.
os.walk - это уже deep обработчик папки. То-есть он смотрит папку, подпапки и файлы.
from os import walk
result: list[str] = []
for (path, folders, files) in walk(folder_path):
# path - папка, folders - имена подпапок, files - имена файлов
if len(folders) == 0: # если нету подпапок
result.append(path)
print(result)