Я наткнулся на очень простую проблему сегодня.У меня есть структура каталогов, подобная этой:
main_dir
|_A
|_X
|_Y
|_B
|_X
|_Y
|_C
|_X
|_PP
|_QQ
|_Y
|_PP
Я хочу рекурсивно получить все подкаталоги до уровня, где присутствуют X
и Y
.Я не хочу включать PP
и QQ
в этот список.
Я пробовал это:
mai_dir = Path("main_dir")
subdirs = [x for x in iter(main_dir("**/*")) if x.is_dir()]
Проблема с этим подходом состоит в том, что он также включает эти результаты:
main_dir/A
main_dir/B
main_dir/C
main_dir/C/X/PP
main_dir/C/Y/QQ
Я хочу исключить эти результаты.Я знаю, что могу применить другой цикл for
с if-else
, но мне интересно, есть ли способ избежать цикла здесь.