Python Glossary English

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Сообщить о неточности