Python pathlib.rglob: найти файлы во вложенных папках

Категория: Python · Язык: Python · Обновлено:

Path.rglob ищет файлы рекурсивно по шаблону и возвращает объекты Path. Отфильтруйте нужное расширение и сортируйте результат, если порядок обхода важен для воспроизводимого скрипта.

Рабочий пример

Python
from pathlib import Path
import tempfile
with tempfile.TemporaryDirectory() as root134:
    base134 = Path(root134)
    (base134 / "src").mkdir()
    (base134 / "src" / "app.py").write_text("pass", encoding="utf-8")
    (base134 / "tests").mkdir()
    (base134 / "tests" / "test_app.py").write_text("pass", encoding="utf-8")
    found134 = sorted(p.relative_to(base134).as_posix() for p in base134.rglob("*.py"))
print(found134)  # ['src/app.py', 'tests/test_app.py']

Путь можно ограничить подкаталогом вместо корня. Для исключения .venv, node_modules и build проверяйте относительные части пути до обработки найденных файлов.

Частый вопрос

Чем rglob отличается от glob?

glob ищет по шаблону в заданном уровне пути, а rglob рекурсивно проходит подпапки. Оба метода лениво дают пути по мере итерации.