Получить список имен файлов можно при помощи библиотеки os командой os listdir

Обновлено: 05.07.2024

Что такое метод os.listdir() в Python?

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

  • <СИНТАКСИС: os.listdir(путь)
  • ПАРАМЕТРЫ: Это необязательно. Он содержит путь каталога.
  • ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ: список, содержащий имена записей в каталоге, заданном по пути.

Давайте посмотрим несколько иллюстрированных примеров использования listdir() с помощью Python.

Пример 1: Чтобы получить файлы и каталоги в корневом каталоге с помощью listdir():

Вывод и объяснение:

В этом примере мы выбрали корневой каталог в качестве желаемого пути. Затем мы использовали метод listdir (), чтобы получить список каталогов и файлов, присутствующих внутри корневого каталога.

Пример 2: Получение файлов и каталогов в текущем рабочем каталоге:

Вывод и объяснение:

Сначала мы использовали метод getcwd (), чтобы получить путь к текущему рабочему каталогу. Затем мы передали этот путь в качестве параметра методу для извлечения содержимого текущего рабочего каталога.

Пример 3: Не использовать параметр path в listdir() В Python:

Вывод и объяснение:

В этом конкретном примере мы не передали параметр path функции. В результате функция автоматически брала путь к текущему рабочему каталогу, возвращая таким образом содержимое того же самого.

Пример 4: цикл listdir в try-except с использованием Python:

Пример 5: Python listdir сортировка по дате:

Вывод и объяснение:

Пример 6: Python listdir сортировка по имени:

Вывод и объяснение:

Здесь мы использовали метод sort() для сортировки содержимого каталога по имени. Во всяком случае, по умолчанию выводится ос.listdir() будет отсортирован только по имени.

Пример 7: Python listdir абсолютный путь:

Вывод и объяснение:

Здесь мы использовали метод abspath (), чтобы получить абсолютный путь к текущему каталогу. Затем мы использовали метод dirname (), чтобы получить путь к каталогу данного абсолютного пути.

Пример 8: Python listdir с определенным расширением:

Вывод и объяснение:

Заключение | Python os.listdir():

На этом мы заканчиваем нашу статью. Я надеюсь, что было легко понять концепцию listdir() в python и различные способы, которыми она может быть использована для извлечения содержимого по заданному пути.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

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

В индустрии программного обеспечения большинство программ тем или иным образом обрабатывают файлы: создают их, переименовывают, перемещают и так далее. Любой программист должен обладать таким навыком. С этим руководством вы научитесь использовать модуль os в Python для проведения операций над файлами и каталогами вне зависимости от используемой операционной системы.

Важно знать, что модуль os используется не только для работы с файлами. Он включает массу методов и инструментов для других операций: обработки переменных среды, управления системными процессами, а также аргументы командной строки и даже расширенные атрибуты файлов, которые есть только в Linux.

Модуль встроенный, поэтому для работы с ним не нужно ничего устанавливать.

Вывод текущей директории

Для получения текущего рабочего каталога используется os.getcwd() :

os.getcwd() возвращает строку в Юникоде, представляющую текущий рабочий каталог. Вот пример вывода:

Создание папки

Для создания папки/каталога в любой операционной системе нужна следующая команда:

После ее выполнения в текущем рабочем каталоге тут же появится новая папка с названием «folder».

Если запустить ее еще раз, будет вызвана ошибка FileExistsError , потому что такая папка уже есть. Для решения проблемы нужно запускать команду только в том случае, если каталога с таким же именем нет. Этого можно добиться следующим образом:

Функция os.path.isdir() вернет True , если переданное имя ссылается на существующий каталог.

Изменение директории

Менять директории довольно просто. Проделаем это с только что созданным:

Еще раз выведем рабочий каталог:

Создание вложенных папок

Предположим, вы хотите создать не только одну папку, но и несколько вложенных:

Это создаст три папки рекурсивно, как показано на следующем изображении:

Создание вложенных папок

Создание файлов

Для создания файлов в Python модули не нужны. Можно использовать встроенную функцию open() . Она принимает название файла, который необходимо создать в качестве первого параметра и желаемый режим открытия — как второй:

w значит write (запись), a — это appending (добавление данных к уже существующему файлу), а r — reading (чтение). Больше о режимах открытия можно почитать здесь.

Переименование файлов

С помощью модуля os достаточно просто переименовать файл. Поменяем название созданного в прошлом шаге.

Работа с папками и создание путей с модулем OS в Python

Модуль Python OS используется для работы с операционной системой и является достаточно большим, что бы более конкретно описать его применение. С помощью его мы можем получать переменные окружения PATH, названия операционных систем, менять права на файлах и многое другое. В этой статье речь пойдет про работу с папками и путями, их создание, получение списка файлов и проверка на существование. Примеры приведены с Python 3, но и с предыдущими версиями ошибок быть не должно.

Модуль OS не нуждается в дополнительной установке, так как поставляется вместе с инсталлятором Python.

Навигация по посту

Получение директорий и списка файлов

Есть несколько способов вернуть список каталогов и файлов по указанному пути. Первый способ используя os.walk, который возвращает генератор:

Получение списка папок и файлов с библиотекой os в Python

Такие объекты можно итерировать для понятного отображения структуры:

Обработка списка директорий и файлов с библиотекой os в Python

Сам кортеж делится на 3 объекта: текущая директория, имя вложенных папок (если есть), список файлов. Я так же разделил их на примере ниже:

Разделение директорий и папок с библиотекой os в Python

Os.walk является рекурсивным методом. Это значит, что для поиска файлов в конкретной директории вы будете итерировать и все вложенные папки. Обойти это с помощью самого метода нельзя, но вы можете использовать break так как os.walk возвращает указанную директорию первой. Можно так же использовать next():

Вывод первой директории с OS walk в Python

Получение файлов через listdir

Есть еще один метод получения файлов используя listdir. Отличия от предыдущего метода в том, что у нас не будет разделения файлов и папок. Он так же не является рекурсивным:

Вывод списка файлов и папок с библиотекой os.listdir в Python

Получение полного абсолютного пути к файлам

Для последующего чтения файла нам может понадобится абсолютный путь. Мы можем использовать обычный метод сложения строк или метод os.path.join, который сделает то же самое, но и снизит вероятность ошибки если программа работает на разных ОС:

Получение абсолютного пути с os.path.join в Python

Исключение каталогов или файлов из списка

У нас может быть список полных путей, например из списка выше, из которого мы хотим исключить папки или файлы. Для этого используется os.path.isfile:

Проверка папок и файлов с os.path.os.isfile()

Такой же принцип имеют следующие методы:

  • os.path.isdir() - относится ли путь к папке;
  • os.path.islink() - относится ли путь к ссылке;

Получение расширения файлов

Расширение файла можно получить с помощью os.path.splittext(). Этот метод вернет путь до расширения и само расширение. Этот метод исключает ситуацию, когда точка может стоять в самом пути. Если в качестве пути мы выберем каталог (который не имеет расширения) , результатом будет пустая строка:

Получение расширений файлов с os.path.splittext в Python

os.path.basename(path) - вернет имя файла и расширение.

Создание и удаление директорий

Методы по изменению папок следующие:

  • os.mkdir() - создаст папку;
  • os.rename() - переименует;
  • os.rmdir() - удалит.

Создание и удаление директорий в Python с os.mkdir и os.rmdir

Если попытаться создать несколько вложенных папок сразу, используя предыдущий пример, появится ошибка FileNotFoundError. Создание папок включая промежуточные выполняется с os.makedirs():

Проверка директорий и файлов на существование

Если мы пытаемся создать папку с существующим именем, то получим ошибку FileExistsError. Один из способов этого избежать - использование os.path.exists(), который вернет True в случае существования файла или папки:

Проверка существование пути с os.path.exists в Python

Получение и изменение текущей директории

Запуская любую программу или консоль, например CMD, мы это делаем из определенной директории. С этой и соседней директорией мы можем работать без указания полного пути. Для того что бы узнать такую директорию в Python используется метод os.getcwd():

Получение текущей директории с os.getcwd в Python

Изменение директории с Python os.chdir

Модуль os в Python. Примеры использования.

Статьи

Руководство по основным методам модуля os в Python. Подробно рассмотрим примеры использования популярных методов.

Введение

Этот модуль представляет собой портативный способ использования функциональности, зависящей от операционной системы.

Модуль операционной системы поставляется по умолчанию со стандартными утилитными модулями Python, поэтому вам не нужно ничего устанавливать, чтобы начать использовать его.

Модуль os предоставляет массу методов, которые вы используете в различных ситуациях при взаимодействии с операционной системой, начиная от создания новых файлов и папок и заканчивая их переименованием и удалением.

Использование модуля os в Python

Вы можете посмотреть список всех доступных методов в модуле os используя следующий код

Листинг команды очень большой и мне пришлось сократить часть вывода.

Так же вы можете обратиться к официальной документации по использованию модуля os в Python.

В этой статье мы рассмотрим некоторые основные методы библиотеки os на конкретных примерах.

Использование метода os.getcwd()

Этот метод ОС используется для получения пути текущей рабочей директории.

Использование метода os.listdir()

Этот метод возвращает все файлы и каталоги в текущем каталоге.

Также можно передать параметр конкретной директории для просмотра ее файлов и каталогов.

Использование метода os.mkdir()

Этот метод используется для создания новой директории в текущей папке, например, давайте создадим директорию под названием Products.

Использование метода os.rename()

Модуль используется для переименования файла или папки, ему передается два аргумента, старое и новое имя файла или папки. Например, переименуем папку Products в Stuff.

Использование метода os.rmdir()

Этот метод используется для удаления каталогов. Имя каталога, который вы хотите удалить нужно передать первым аргументом. os.rmdir() будет работать только для пустых директорий.

Например, удалим каталог Stuff с помощью rmdir().

Использование метода os.remove()

Этот метод используется для удаления файлов. Например, удалим файл powerlog.

Использование метода os.system()

Вывод программы выглядит следующим образом

Цифра 0 в конце вывода означает что выполнение программы прошло без ошибок.

Использование метода os.uname()

Этот метод возвращает информацию, идентифицирующую текущую операционную систему.

Использование метода os.environ

Environ не является методом в модуле ОС, а является параметром процесса, через который мы можем получить доступ к переменным окружения системы.

Например, давайте получим доступ к переменной окружения HOME

Мы также можем установить собственную переменную окружения, как показано в примере ниже.

Использование метода os.getuid()

Этот модуль возвращает идентификатор пользователя текущего процесса.

Использование метода os.getpid()

Возвращает реальный идентификатор процесса текущего приложения.

Заключение

В этой статье мы узнали о модуле os и о том, как его можно использовать в различных задачах, связанных с операционной системой, используя его методы.

Надеюсь, вам была интересна эта статья, не стесняйтесь поделиться ее со своими коллегами и друзьями в ваших сообществах разработчиков.

Оставляйте в комментариях свои предложения и отзывы и я обязательно свяжусь с вами как можно скорее.


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

Эта статья предназначена как раз для начинающих разработчиков. В ней описаны 8 крайне важных команд для работы с файлами, папками и файловой системой в целом. Все примеры из этой статьи размещены в Google Colab Notebook (ссылка на ресурс — в конце статьи).

Показать текущий каталог

Самая простая и вместе с тем одна из самых важных команд для Python-разработчика. Она нужна потому, что чаще всего разработчики имеют дело с относительными путями. Но в некоторых случаях важно знать, где мы находимся.

Относительный путь хорош тем, что работает для всех пользователей, с любыми системами, количеством дисков и так далее.

Так вот, для того чтобы показать текущий каталог, нужна встроенная в Python OS-библиотека:


Ее легко запомнить, так что лучше выучить один раз, чем постоянно гуглить. Это здорово экономит время.


Имейте в виду, что я использую Google Colab, так что путь /content является абсолютным.

Проверяем, существует файл или каталог

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

Функция os.path.exists () принимает аргумент строкового типа, который может быть либо именем каталога, либо файлом.

В случае с Google Colab при каждом запуске создается папка sample_data. Давайте проверим, существует ли такой каталог. Для этого подойдет следующий код:


Эта же команда подходит и для работы с файлами:


Если папки или файла нет, команда возвращает false.


Объединение компонентов пути

В предыдущем примере я намеренно использовал слеш "/" для разделителя компонентов пути. В принципе это нормально, но не рекомендуется. Если вы хотите, чтобы ваше приложение было кроссплатформенным, такой вариант не подходит. Так, некоторые старые версии ОС Windows распознают только слеш "\" в качестве разделителя.

Но не переживайте, Python прекрасно решает эту проблему благодаря функции os.path.join (). Давайте перепишем вариант из примера в предыдущем пункте, используя эту функцию:




Создание директории

Ну а теперь самое время создать директорию с именем test_dir внутри рабочей директории. Для этого можно использовать функцию
os.mkdir():


Давайте посмотрим, как это работает на практике.


Если же мы попытаемся создать каталог, который уже существует, то получим исключение.


Именно поэтому рекомендуется всегда проверять наличие каталога с определенным названием перед созданием нового:


Еще один совет по созданию каталогов. Иногда нам нужно создать подкаталоги с уровнем вложенности 2 или более. Если мы все еще используем os.mkdir (), нам нужно будет сделать это несколько раз. В этом случае мы можем использовать os.makedirs (). Эта функция создаст все промежуточные каталоги так же, как флаг mkdir -p в системе Linux:


Вот что получается в результате.


Показываем содержимое директории

Еще одна полезная команда — os.listdir(). Она показывает все содержимое каталога.

Команда отличается от os.walk (), где последний рекурсивно показывает все, что находится «под» каталогом. os.listdir () намного проще в использовании, потому что просто возвращает список содержимого:


В некоторых случаях нужно что-то более продвинутое — например, поиск всех CSV-файлов в каталоге «sample_data». В этом случае самый простой способ — использовать встроенную библиотеку glob:


Перемещение файлов

Самое время попробовать переместить файлы из одной папки в другую. Рекомендованный способ — еще одна встроенная библиотека shutil.
Сейчас попробуем переместить все CSV-файлы из директории «sample_data» в директорию «test_dir». Ниже — пример кода для выполнения этой операции:


Кстати, есть два способа выполнить задуманное. Например, мы можем использовать библиотеку OS, если не хочется импортировать дополнительные библиотеки. Как os.rename, так и os.replace подходят для решения задачи.

Но обе они недостаточно «умные», чтобы позволить перемесить файлы в каталог.


Чтобы все это работало, нужно явно указать имя файла в месте назначения. Ниже — код, который это позволяет сделать:


Здесь функция os.path.basename () предназначена для извлечения имени файла из пути с любым количеством компонентов.

Другая функция, os.replace (), делает то же самое. Но разница в том, что os.replace () не зависит от платформы, тогда как os.rename () будет работать только в системе Unix / Linux.

Еще один минус — в том, что обе функции не поддерживают перемещение файлов из разных файловых систем, в отличие от shutil.

Поэтому я рекомендую использовать shutil.move () для перемещения файлов.

Копирование файлов

Аналогичным образом shutil подходит и для копирования файлов по уже упомянутым причинам.

Если нужно скопировать файл README.md из папки «sample_data» в папку «test_dir», поможет функция shutil.copy():



Удаление файлов и папок

Теперь пришел черед разобраться с процедурой удаления файлов и папок. Нам здесь снова поможет библиотека OS.

Когда нужно удалить файл, нужно воспользоваться командой os.remove():


Если требуется удалить каталог, на помощь приходит os.rmdir():


Однако он может удалить только пустой каталог. На приведенном выше скриншоте видим, что удалить можно лишь каталог level_3. Что если мы хотим рекурсивно удалить каталог level_1? В этом случае зовем на помощь shutil.


Функция shutil.rmtree() сделает все, что нужно:


Пользоваться ею нужно с осторожностью, поскольку она безвозвратно удаляет все содержимое каталога.

Собственно, на этом все. 8 важных операций по работе с файлами и каталогами в среде Python мы знаем. Что касается ссылки, о которой говорилось в анонсе, то вот она — это Google Colab Network с содержимым, готовым к запуску.

Читайте также: