Glob и rglob в Python для поиска файлов по маске

Glob и rglob в Python для поиска файлов по маске
Содержание статьи

Чтобы найти CSV только в указанной папке, возьмите Path.glob("*.csv"). Если файлы лежат и глубже, используйте Path.rglob("*.csv"). Пример Mentoring.digital показывает, как из совпадений по маске получить список файлов для обработки.

Что меняется при рекурсивном поиске

Пусть в reports лежит summary.csv, а в reports/2026 находится nov.csv. Вызов glob("*.csv") найдёт файл на верхнем уровне. Вызов rglob("*.csv") пройдёт также по подпапкам. Запись glob("**/*.csv") выражает тот же рекурсивный шаблон.

Как получить список только из файлов

Совпадение имени ещё не определяет тип пути. В учебной папке может оказаться каталог archive.csv, который подходит под маску. Проверка is_file() исключает каталоги. Относительные пути удобно сравнивать между запусками и показывать в отчёте.

from pathlib import Path

root = Path("reports")
files = sorted(
    path.relative_to(root).as_posix()
    for path in root.rglob("*.csv")
    if path.is_file()
)

for name in files:
    print(name)

Для описанного дерева ожидаются две строки, 2026/nov.csv и summary.csv. Сортировка делает их порядок явным. Добавьте файл readme.txt и одноимённую с маской папку, чтобы проверить границу отбора.

Какие свойства файловой системы учитывать

Чувствительность к регистру по умолчанию зависит от платформы. В Python 3.12 и новее можно явно передать case_sensitive=True. Если ссылки на файлы нужно исключить, дополнительно проверьте is_symlink(). Перед обработкой большого дерева задайте узкую начальную папку, иначе рекурсивный обход затронет всё под ней.

Поиск файлов можно включить в учебный проект на курсах Python с практикой. Если список в рабочем скрипте расходится с ожидаемым, принесите структуру тестовой папки на разбор к ментору по Python.

Похожие статьи по данной теме