


Чтобы найти 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.