
Python предоставляет несколько подходов для получения списка файлов в папке, каждый из которых подходит для конкретных задач. Модуль os позволяет быстро просматривать содержимое директории и работать с именами файлов, включая проверку типов объектов и доступ к метаданным.
Модуль pathlib упрощает работу с путями, позволяя использовать объектно-ориентированный подход. С его помощью легко фильтровать файлы по расширению, проверять наличие конкретных файлов и рекурсивно обходить вложенные папки без ручной сборки путей.
При работе с большими директориями стоит учитывать производительность операций и правильно обрабатывать ошибки, такие как PermissionError или FileNotFoundError. Использование try-except блоков предотвращает прерывание скрипта и обеспечивает контроль над ситуациями с ограниченным доступом.
Список файлов можно дополнительно сортировать по дате создания, имени или размеру, что облегчает обработку и автоматизацию задач. Правильная фильтрация и сортировка помогают быстро находить нужные файлы, особенно при работе с архивами, логами или медиа-контентом.
Модуль os позволяет получать список файлов и папок с помощью функции os.listdir(path). Она возвращает массив строк с именами объектов в указанной директории, включая файлы и подпапки.
Пример кода:
import os path = '/путь/к/директории' for item in os.listdir(path): full_path = os.path.join(path, item) if os.path.isfile(full_path): print(item)
При необходимости отображать дополнительные свойства файлов удобно использовать os.stat(), который возвращает размер, дату изменения и права доступа.
| Метод | Описание |
|---|---|
| os.listdir(path) | Возвращает список всех файлов и папок в директории |
| os.path.isfile(path) | Проверяет, является ли путь файлом |
| os.path.isdir(path) | Проверяет, является ли путь папкой |
| os.path.join(a, b) | Объединяет части пути в корректный путь для ОС |
| os.stat(path) | Возвращает информацию о файле: размер, дата изменения, права доступа |
Для обхода вложенных директорий можно комбинировать os.walk(), которая возвращает тройки (текущая папка, списки папок, списки файлов), что упрощает рекурсивный поиск.
Применение pathlib для работы с путями и файлами

Модуль pathlib предоставляет удобный способ работы с путями и файлами через объекты Path. Они позволяют создавать пути, проверять их существование и свойства, а также выполнять операции без ручной сборки строк.
Для получения списка файлов в папке используется метод iterdir(), возвращающий генератор объектов Path. Чтобы вывести только файлы, проверяют is_file() каждого элемента:
Пример кода:
from pathlib import Path
path = Path('/путь/к/директории')
for item in path.iterdir():
if item.is_file():
print(item.name)
Для рекурсивного поиска используют rglob(‘*.расширение’), что позволяет находить все файлы с заданным расширением во вложенных папках.
Объекты Path предоставляют свойства .name для имени файла, .suffix для расширения, .stem для имени без расширения, а метод stat() возвращает размер и дату изменения.
Использование pathlib исключает проблемы с разделителями путей между Windows, Linux и macOS, облегчая перенос скриптов между системами.
Фильтрация файлов по расширению в Python

Для выделения файлов определенного типа используют проверку расширения. В модуле os можно комбинировать os.listdir() с os.path.splitext(), чтобы сравнивать расширение каждого файла:
Пример кода:
import os path = '/путь/к/директории' for file in os.listdir(path): full_path = os.path.join(path, file) if os.path.isfile(full_path) and os.path.splitext(file)[1] == '.txt': print(file)
С pathlib фильтрация упрощается через suffix или шаблон поиска. Например, метод rglob(‘*.csv’) возвращает все CSV-файлы во вложенных папках:
Пример кода:
from pathlib import Path
path = Path('/путь/к/директории')
for file in path.rglob('*.csv'):
print(file.name)
Фильтрацию можно комбинировать с другими условиями, например, проверкой размера через stat().st_size или даты изменения через stat().st_mtime, что позволяет отбирать файлы по нескольким критериям одновременно.
Рекурсивное получение списка файлов во вложенных папках

Рекурсивный обход позволяет получить все файлы в директории и её подкаталогах. В модуле os для этого используется os.walk(), который возвращает тройки: текущая папка, список папок и список файлов.
Пример использования os.walk():
import os path = '/путь/к/директории' for root, dirs, files in os.walk(path): for file in files: print(os.path.join(root, file))
С pathlib рекурсивный поиск упрощается методом rglob(), который принимает шаблон для фильтрации:
Пример использования pathlib:
from pathlib import Path
path = Path('/путь/к/директории')
for file in path.rglob('*'):
if file.is_file():
print(file)
Рекомендации при рекурсивном обходе:
- Использовать фильтрацию по расширению через rglob(‘*.txt’) или os.path.splitext().
- Обрабатывать ошибки доступа через try-except, чтобы пропускать недоступные папки.
- При работе с большими директориями учитывать потребление памяти генераторами pathlib.
- Сортировать результаты после обхода, если важен порядок файлов по дате или имени.
Сортировка файлов по имени, дате и размеру

Сортировка файлов облегчает поиск и обработку данных. В Python можно использовать встроенную функцию sorted() с ключами, получаемыми через os или pathlib.
Примеры сортировки с использованием os:
- По имени: sorted(files) или files.sort()
- По дате изменения: sorted(files, key=lambda x: os.path.getmtime(os.path.join(path, x)))
- По размеру: sorted(files, key=lambda x: os.path.getsize(os.path.join(path, x)))
С pathlib сортировка выглядит более наглядно:
- По имени: sorted(path.iterdir(), key=lambda f: f.name)
- По дате изменения: sorted(path.iterdir(), key=lambda f: f.stat().st_mtime)
- По размеру: sorted(path.iterdir(), key=lambda f: f.stat().st_size)
Рекомендации:
- Для сортировки по дате или размеру проверять, что объект является файлом через is_file().
- Использовать реверсирование reverse=True для получения файлов в порядке убывания.
- Комбинировать сортировку с фильтрацией по расширению для точного отбора нужных файлов.
Обработка ошибок при доступе к папкам и файлам

При работе с файлами часто возникают ошибки доступа. Основные исключения, с которыми сталкиваются при Python:
- FileNotFoundError – папка или файл не существует.
- PermissionError – недостаточно прав для чтения или записи.
- OSError – общие ошибки работы с файловой системой.
Для безопасного обхода директории используют try-except блоки:
Пример кода с os:
import os
path = '/путь/к/директории'
try:
files = os.listdir(path)
for file in files:
full_path = os.path.join(path, file)
if os.path.isfile(full_path):
print(file)
except FileNotFoundError:
print('Папка не найдена:', path)
except PermissionError:
print('Нет прав для доступа к папке:', path)
С pathlib обработка ошибок аналогична:
