Python pathlib.rglob: найти файлы во вложенных папках
Path.rglob ищет файлы рекурсивно по шаблону и возвращает объекты Path. Отфильтруйте нужное расширение и сортируйте результат, если порядок обхода важен для воспроизводимого скрипта.
Рабочий пример
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 рекурсивно проходит подпапки. Оба метода лениво дают пути по мере итерации.