Список файлов ТОЛЬКО в текущем каталоге Python: без подкаталогов

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для формирования списка имен только файлов, находящихся в текущей директории, можно использовать следующий код:

Python
Скопировать код
import os
print([f for f in os.listdir('.') if os.path.isfile(f)])

Такой подход обеспечивает получение понятного списка файлов благодаря применению генератора списков и функции os.path.isfile().

Кинга Идем в IT: пошаговый план для смены профессии

Методы определения содержимого каталога: модули 'os' и 'pathlib'

Несмотря на то, что функция os.listdir весьма удобна, для более эффективной работы рекомендуется применять функцию os.scandir(), особенно с Python версией 3.5 и выше. Функция os.scandir() предоставляет итератор для сканирования, который увеличивает производительность за счёт сокращения числа системных вызовов.

Рассмотрим теперь модуль pathlib, представляющий объектно-ориентированный подход к обработке файловых путей:

Python
Скопировать код
from pathlib import Path

# Получаем список файлов с помощью pathlib и генератора
files_in_current_directory = (entry for entry in Path('.').iterdir() if entry.is_file())
print(list(files_in_current_directory))

Модуль pathlib также предлагает метод is_file(), аналог os.path.isfile(), для фильтрации только файлов:

Python
Скопировать код
# Фильтруем файлы, как при традиционном отборе
files_in_current_directory = filter(lambda p: p.is_file(), Path('.').iterdir())
print(list(files_in_current_directory))

Приведение в порядок: Сортировка файлов по расширениям

Классифицируем файлы по их расширениям с помощью практичного генератора словарей:

Python
Скопировать код
# Как библиотекарь, разделяем файлы по категориям
files_by_extension = {
    ext: [file for file in os.listdir('.') if file.endswith(ext)]
    for ext in ['.jpg', '.txt', '.py', '.md']  # Добавляйте расширения при необходимости
}

Для перемещения файлов в соответствии с их расширениями используем модуль shutil:

Python
Скопировать код
import shutil

# По образу гроссмейстера в шахматах, перемещаем файлы по категориям
for ext, files in files_by_extension.items():
    for file in files:
        shutil.move(file, f"destination_folder/{file}")

Всегда применяйте обработку исключений для предотвращения возникновения ошибок, которые могут произойти из-за отсутствия файлов или нюансов файловой системы:

Python
Скопировать код
try:
    # Обработка операций с файлами с осторожностью
except OSError as e:
    print(f"Ошибка: {e.strerror}")

Простота превыше всего

Если вы цените простоту и хотите избежать излишних импортов, можно использовать модуль glob:

Python
Скопировать код
from glob import glob

print(glob('*.py'))  # Выводит все Python-файлы в текущем каталоге

Визуализация

Представьте директории в виде птиц (🐦) и файлы как бумаги (📄). Ваша задача – выбрать бумаги:

Изображение:  🐦📄📄🐦🐦📄📄🐦
Отфильтровано: [📄, 📄, 📄, 📄]

И вуаля, мы успешно обнаружили все файлы — это прекрасно! 🎉

Управление рекурсией: Методичный обход

Функция os.walk позволяет рекурсивно обходить каталоги и обладает высокой мощностью. Как известно, с большой мощностью идёт большая ответственность:

Python
Скопировать код
for root, dirs, files in os.walk('.', topdown=True):
    # 'dirs.clear()' работает как барьер, останавливающий рекурсию директорий
    dirs.clear()
    print(files)
    break  # Завершаем цикл, хотя скрипт пока что все еще работает!

Данный код ограничивает рекурсию, очищая список dirs, и прекращает обход при первой итерации.