Модуль OS

Введение в модуль os

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

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

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

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

  • Управление процессами: модуль os позволяет создавать, управлять и завершать процессы. Сюда входят функции для создания новых процессов, получения информации о процессах и отправки сигналов запущенным процессам.

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

  • Независимость от платформы. Одним из ключевых преимуществ модуля os является его независимость от платформы. Модуль абстрагирует различия между различными операционными системами, такими как Windows, macOS и Linux, что позволяет вам писать код, который без проблем работает на разных платформах.

Для начала работы не забудьте сперва импортировать модуль os:

import os

 

Функция getcwd модуля OS

Функция getcwd() в модуле os в Python позволяет пользователю узнать текущую рабочую директорию, в которой осуществляется выполнение программы. Название getcwd обозначает «get current working directory». Эта функция является частью модуля os, который предоставляет множество операций для работы с файловой системой.

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

Использование os.getcwd() также может быть полезным для отладки программ, так как она позволяет подтвердить, что программа работает в ожидаемой директории. Например, прежде чем открывать файл для чтения или записи, программист может вызвать эту функцию, чтобы убедиться, что он находится в нужном месте.

С точки зрения безопасности и корректной работы приложений, важно помнить, что текущая рабочая директория может изменяться в процессе выполнения программы с помощью функции os.chdir(). Таким образом, os.getcwd() служит надежным инструментом для отслеживания состояния рабочего окружения. Вот пример использования.

import os

current_directory = os.getcwd()
print("Текущая директория:", current_directory)

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

В качестве примера я открою свой проект на FastAPI. Вот пример запуска в MacOS:

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

Функция listdir модуля OS

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

Основное применение os.listdir() заключается в автоматизации задач управления файлами, таких как поиск, сортировка и фильтрация данных. Например, можно использовать её для создания списков файлов определённого типа или для организации данных по дате создания. Функция поддерживает работу с относительными и абсолютными путями, что делает её универсальным инструментом для работы с файловой системой.

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

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

import os

print(os.listdir())

Раз результатом является список, то можно по нему итерироваться:

import os

for name in os.listdir():
    print(name)

Ниже пример вызова в консоли данной функции:

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

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

  • относительным

  • абсолютным

При относительном пути вы указываете адрес папки относительно текущего рабочего каталога. В примере ниже мы передаем путь  feedback. Так как путь текущего рабочего каталога равен /Users/permin0ff/Downloads/project/fastapi_ecommerce, то мы получим при помощи функции os.listdir() содержимое папки:

/Users/permin0ff/Downloads/project/fastapi_ecommerce/app/

При абсолютном пути вы указываете полный путь до необходимого каталога:

Если передать путь, по которому не существует каталога, будет исключение FileNotFoundError

>>> os.listdir('no_dir')
FileNotFoundError: [Errno 2] No such file or directory: 'no_dir'

Если вместо пути к каталогу передать существующий путь к файлу, будет исключение NotADirectoryError

>>> os.listdir('no_file.py')
FileNotFoundError: [Errno 2] No such file or directory: 'no_file.py'

 

Функция chdir модуля OS

Функция os.listdir() в Python предоставляет пользователям возможность получать список всех файлов и папок, находящихся в указанной директории. Название chdir обозначает «change current working directory». Важно отметить, что данная функция возвращает элементы в виде строк, представляющих имена файлов и каталогов, без дополнительных данных о их атрибутах или содержимом. Это позволяет разработчикам эффективно обрабатывать содержимое каталогов и интегрировать данный функционал в различные программы и скрипты.

Основное применение os.listdir() заключается в автоматизации задач управления файлами, таких как поиск, сортировка и фильтрация данных. Например, можно использовать её для создания списков файлов определённого типа или для организации данных по дате создания. Функция поддерживает работу с относительными и абсолютными путями, что делает её универсальным инструментом для работы с файловой системой.

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

import os

os.chdir('folder')

print("Current working directory: ", os.getcwd())

Путь можно указать относительным и абсолютным:

Если указать адрес на несуществующую папку, получите исключение FileNotFoundError, а если указать адрес не на папку, а на существующий файл, будет исключение NotADirectoryError

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

 

Перейти к следующему шагу

Комментарии