Python 3.4+pathlibфункция
.rglob()
поиск
Рекурсивно ищет файлы по шаблону во всех поддиректориях — то же, что `.glob()` с ведущим `**/`.
Синтаксис
p.rglob('*.txt')
Выдаёт всё подряд, включая каталоги, а не только файлы — если нужны именно файлы, фильтруйте по .is_file(). Обход идёт по всему дереву целиком, вместе с .git, .venv и node_modules, поэтому на большом каталоге он заметно медленный; результат при этом ленивый, работа начинается только когда вы начали итерацию.
Примеры
from pathlib import Path
p = Path('rglob_demo') # свой каталог, а не /tmp целиком: rglob обойдёт ВСЁ дерево
p.mkdir(exist_ok=True)
(p / 'conf').mkdir(exist_ok=True); (p / 'conf' / 'app.cfg').touch()
[x.name for x in p.rglob('*.cfg')] # → ['app.cfg'] — все .cfg рекурсивно
sorted(x.name for x in p.rglob('*')) # → ['app.cfg', 'conf'] — всё содержимое дерева
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности