Модуль os
Модуль os предоставляет множество функций для работы с операционной системой, причём их поведение, как правило, не зависит от ОС, поэтому программы остаются переносимыми. Здесь будут приведены наиболее часто используемые из них.
Будьте внимательны: некоторые функции из этого модуля поддерживаются не всеми ОС.
os.name — имя операционной системы. Доступные варианты: ‘posix’, ‘nt’, ‘mac’, ‘os2’, ‘ce’, ‘java’.
os.environ — словарь переменных окружения. Изменяемый (можно добавлять и удалять переменные окружения).
os.getlogin() — имя пользователя, вошедшего в терминал (Unix).
os.getpid() — текущий id процесса.
os.uname() — информация об ОС. возвращает объект с атрибутами: sysname — имя операционной системы, nodename — имя машины в сети (определяется реализацией), release — релиз, version — версия, machine — идентификатор машины.
os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) — проверка доступа к объекту у текущего пользователя. Флаги: os.F_OK — объект существует, os.R_OK — доступен на чтение, os.W_OK — доступен на запись, os.X_OK — доступен на исполнение.
os.chdir(path) — смена текущей директории.
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) — смена прав доступа к объекту (mode — восьмеричное число).
os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) — меняет id владельца и группы (Unix).
os.getcwd() — текущая рабочая директория.
os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) — создаёт жёсткую ссылку.
os.listdir(path=».») — список файлов и директорий в папке.
os.mkdir(path, mode=0o777, *, dir_fd=None) — создаёт директорию. OSError, если директория существует.
os.makedirs(path, mode=0o777, exist_ok=False) — создаёт директорию, создавая при этом промежуточные директории.
os.remove(path, *, dir_fd=None) — удаляет путь к файлу.
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает файл или директорию из src в dst.
os.renames(old, new) — переименовывает old в new, создавая промежуточные директории.
os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) — переименовывает из src в dst с принудительной заменой.
os.rmdir(path, *, dir_fd=None) — удаляет пустую директорию.
os.removedirs(path) — удаляет директорию, затем пытается удалить родительские директории, и удаляет их рекурсивно, пока они пусты.
os.symlink(source, link_name, target_is_directory=False, *, dir_fd=None) — создаёт символическую ссылку на объект.
os.sync() — записывает все данные на диск (Unix).
os.truncate(path, length) — обрезает файл до длины length.
os.utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) — модификация времени последнего доступа и изменения файла. Либо times — кортеж (время доступа в секундах, время изменения в секундах), либо ns — кортеж (время доступа в наносекундах, время изменения в наносекундах).
os.walk(top, topdown=True, onerror=None, followlinks=False) — генерация имён файлов в дереве каталогов, сверху вниз (если topdown равен True), либо снизу вверх (если False). Для каждого каталога функция walk возвращает кортеж (путь к каталогу, список каталогов, список файлов).
os.system(command) — исполняет системную команду, возвращает код её завершения (в случае успеха 0).
os.urandom(n) — n случайных байт. Возможно использование этой функции в криптографических целях.
os.path — модуль, реализующий некоторые полезные функции на работы с путями.
Для вставки кода на Python в комментарий заключайте его в теги
Модуль os в Python, доступ к функциям ОС
Модуль os обеспечивает портативный способ использования функциональных возможностей, зависящих от операционной системы.
- если нужно просто прочитать или записать файл, то лучше воспользоваться встроенной функцией open() ,
- для различных манипуляций с путями, то удобнее будет использовать модуль os.path или pathlib ,
- если необходимо прочитать все строки в файлах, указанных в командной строке, посмотрите на модуль fileinput ,
- для создания временных файлов и каталогов смотрите модуль tempfile ,
- для операций с файлами и каталогами (копирование, перемещение, создание, удаление) используйте модуль shutil .
Примечания о доступности функций модуля os :
- Конструкция всех зависимых от Python модулей, встроенных в операционную систему, такова, что при наличии одинаковых функциональных возможностей он использует один и тот же интерфейс. Например, функция os.stat(path) возвращает статистическую информацию о пути в том же формате, который произошел от интерфейса POSIX.
- Расширения, характерные для конкретной операционной системы, также доступны через модуль os , но их использование является угрозой переносимости ПО между системами.
- Все функции, принимающие пути или имена файлов, принимают как байтовые строки, так и строковые объекты и приводят к объекту одного типа, если возвращается путь или имя файла.
Заметка. Все функции в этом модуле поднимают исключение OSError или их подклассы в случае недопустимых или недоступных имен и путей к файлам или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.
os.error :
Исключение os.error это псевдоним для встроенного исключения OSError .
os.name :
os.name это имя импортируемого модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: 'posix' , 'nt' , 'java' .
Смотрите также sys.platform имеет более тонкую детализацию, os.uname() дает системно-зависимую информацию о версии системы. Модуль platform содержит подробные проверки идентичности системы.
Имена файлов, аргументы командной строки и переменные окружения.
В Python имена файлов, аргументы командной строки и переменные окружения представлены с использованием строкового типа. В некоторых системах, перед передачей их операционной системе необходимо декодирование строк в байты и обратно. Python использует кодировку файловой системы для выполнения этого преобразования (смотрите sys.getfilesystemencoding() ).
В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует обработчик ошибок кодирования surrogateescape . Это означает, что некодируемые байты заменяются символом Unicode U + DCxx при декодировании, и они снова преобразуются в исходный байт при кодировании.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает эту гарантию, функции API могут вызывать ошибки UnicodeErrors .
Управление переменной средой окружения системы в Python
Управление переменными средами environment из кода Python. Переменные среды обычно используются для значений конфигурации, таких как пути поиска, расположение файлов и т.д.
Представление пути в файловой системе
Функция os.fsencode() кодирует имя файла filename в виде пути. Функция os.fsencode() декодирует имя файла filename в виде пути.
Извлечение/установка uid, gid и pid процесса
Функции для различных манипуляций с uid, gid и pid процесса. Чаще всего они используются авторами демонов или специальных системных программ, которым необходимо изменять уровень разрешений, а не запускаться от имени пользователя root.
Наследование файловых дескрипторов
Файловый дескриптор имеет "наследуемый" флаг, который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python-3.4, файловые дескрипторы, созданные Python, по умолчанию не наследуются.
Создание дескриптора файла, чтение, запись и его закрытие
Создание файлового объекта средствами модуля os. Чтение, запись и закрытие файлового дескриптора, изменение прав доступа к нему. Получение статистики файлового дескриптора.
Функция listdir() модуля os в Python
Функция listdir() модуля os возвращает список, содержащий имена файлов и директорий в каталоге, заданном путем path. Список приведен в произвольном порядке и не содержит специальных обозначений
Функция walk() модуля os в Python
Функция walk() модуля os генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в вершине каталога top, включая саму вершину top, она выдает тройной кортеж (dirpath, dirnames, filenames).
Функция scandir() модуля os в Python
Функция scandir() модуля os возвращает итератор объектов os.DirEntry, соответствующих записям в каталоге, заданном путем path. Записи приводятся в произвольном порядке, а специальные символы '.' и '..' не включены.
Объект DirEntry() модуля os в Python
Объект DirEntry() модуля os получается в результате работы функции os.scandir(). Методы объекта DirEntry() предоставляют пути к файлу и другие атрибуты файлов, расположенных в сканируемом каталоге.
Функция stat() модуля os в Python
Функция stat() модуля os получает статистическую информацию файла или дескриптора файла. Выполняет эквивалент системного вызова stat(). Функция stat() может поддерживать указание дескриптора файла и не следовать символическим ссылкам.
Объект stat_result в Python, результаты выполнения os.stat()
Объект stat_result модуля os имеет атрибуты, которые примерно соответствуют членам структуры системного вызова stat.
Функция lstat() модуля os в Python
Функция `lstat()` модуля `os` выполняет эквивалент системного вызова `lstat() для данного пути. Похож на `os.stat()`, но не следует по символическим ссылкам.
Функция access() модуля os в Python
Функция `access()` проверяет доступ к пути `path` для реальных `uid`/`gid`. Эту процедуру можно использовать в среде `suid`/`sgid` для проверки, имеет ли вызывающий пользователь указанный доступ к пути `path`
Функция chdir() модуля os в Python
Функция `chdir()` модуля `os` изменяет текущий рабочий каталог.
Функция chmod() модуля os в Python
Функция `chmod()` модуля `os` изменяет режим доступа к файлу или директории, указанного в `path`
Функция chown() модуля os в Python
Функция `chown()` изменяет владельца и идентификатор группы пути на числовые значения `uid` и `gid`
Функция chroot() модуля os в Python
Функция `chroot()` модуля `os` изменяет корневой каталог текущего процесса на путь файловой системы `path`.
Функция getcwd() модуля os в Python
Функция `getcwd()` вернет строку, а функция `getcwdb()` вернет строку байтов представляющую текущий рабочий каталог.
Функция link() модуля os в Python
Функция `link()` модуля `os` создает жесткую ссылку, указывающую на `src` с именем `dst`.
Функция mkdir() модуля os в Python
Функция `mkdir()` модуля `os` создает каталог с именем `path` с режимом доступа к нему `mode`. Режим `mode` устанавливается последними 3 цифрами восьмеричного представления режима.
Функция makedirs() модуля os в Python
Функция `makedirs()` модуля `os` рекурсивно создает все промежуточные каталоги, если они не существуют. Функция работает подобно `os.mkdir()`, но создает все каталоги промежуточного уровня
Функция symlink() модуля os в Python
Функция `symlink()` модуля `os` создает символическую ссылку, указывающую на `src` с именем `dst`.
Функция readlink() модуля os в Python
Функция `readlink()` модуля `os` вернет строку, представляющую путь, на который указывает символическая ссылка.
Функция remove() модуля os в Python, удалить файл
Функция remove() модуля os удаляет путь path к файлу. Если путь является каталогом, возникает исключение IsADirectoryError. Функция os.remove() семантически идентична os.unlink().
Функция removedirs() модуля os в Python
Функция `removedirs()` модуля `os` удаляет каталоги рекурсивно. Если конечный каталог успешно удален, `os.removedirs()` пытается последовательно удалить каждый родительский каталог, указанный в пути, до появления ошибки. Появления ошибки обычно означает, что родительский каталог не пуст.
Функция rename() модуля os в Python
Функция rename() модуля os переименовывает файл или каталог с именем src в dst. Если имя dst существует, операция, в ряде случаев, завершится с подклассом исключения OSError.
Функция renames() модуля os в Python
Функция `renames()` модуля `os` рекурсивно переименовывает пустые директории или переименовывает конечный файл.
Функция replace() модуля os в Python
Функция `replace()` модуля `os` переименовывает файл или пустой каталог с исходным именем `src` в `dst`.
Функция rmdir() модуля os в Python
Функция `rmdir()` модуля `os` удаляет путь к каталогу `path`. Если директория `path` не существует или не является пустым каталогом, то возникает исключение.
Функция strerror() модуля os в Python
Функция strerror() модуля os возвращает сообщение об ошибке, соответствующее коду ошибки, которая появляется при сбое в коде приложения.
Функция supports_dir_fd модуля os в Python
Функция `supports_dir_fd` модуля `os` возвращает объект `set`, указывающий, какие функции в модуле os принимают дескриптор открытого файла для своего параметра `dir_fd`.
Функция supports_effective_ids модуля os в Python
Функция `supports_effective_ids` модуля `os` возвращает множество `set`, указывающее, разрешает ли функция `os.access()` указывать `True` для своего параметр `аffective_ids` на локальной платформе.
Функция supports_fd модуля os в Python
Функция `supports_fd` модуля `os` возвращает объект `set`, указывающий, какие функции в модуле os позволяют указывать параметр пути в качестве дескриптора открытого файла на локальной платформе.
Функция supports_follow_symlinks модуля os в Python
Функция `os.supports_follow_symlinks()` возвращает множество `set`, которое указывает какие функции в модуле `os` принимают `False` для их параметра `follow_symlinks` на локальной платформе.
Функция truncate() модуля os в Python
Функция `truncate()` модуля `os` обрезает файл, соответствующий пути `path`, так, чтобы он имел длину не более `length` байтов.
Функция utime() модуля os в Python
Функция `utime()` модуля `os` устанавливает/изменяет время доступа к файлу и время изменения файла, указанного в `path`.
Манипулирование списком контроля доступа ACL в Linux
Примером использования расширенных атрибутов OS Linux является реализация списков контроля доступа POSIX ACL.
Функция abort() модуля os в Python
Функция `abort()` модуля `os` генерирует сигнала `SIGABRT` для текущего процесса.
Функция exec*() модуля os в Python
Все эти функции выполняют новую программу, заменяя текущий процесс. Они ничего не возвращают. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающая программа. Ошибки будут сообщаться как исключения `OSError`.
Функция popen() модуля os в Python
Функция popen() модуля os откроет канал для чтения или записи стандартного ввода-вывода запущенной команды cmd.
Функция system() модуля os в Python
Функция system() модуля os выполяет команду command в подоболочке (subshell). Это реализуется путем вызова стандартной функции языка Си system() и имеет те же ограничения.
Функция _exit() модуля os в Python
Функция `_exit()` модуля `os` осуществляет выход из процесса со статусом `n`, без вызова обработчиков очистки, сброса буферов `stdio` и т. д.
Функция fork() модуля os в Python
Функция fork() модуля os форкает дочерний процесс. Возвращает 0 в дочернем элементе и идентификатор дочернего процесса в родительском элементе.
Функция kill() модуля os в Python
Функция `kill()` модуля `os` послает сигнал `sig` на процессу `pid`.
Функция spawn() модуля os в Python
Функции `os.spawn*()` запускают программу, расположенную по указанному пути в файловой системе в новом процессе.
Функция umask() модуля os в Python
Функция `umask()` модуля `os` устанавливает текущий `umask` пользователя в числовое значение `mask` и возвращает предыдущий `umask`.
Функция uname() модуля os в Python
Функция os.uname() возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение - это объект с пятью атрибутами
Функция wait() модуля os в Python
Функция os.wait() возвращает идентификатор процесса и код завершения, упакованный в 16-битовое значение. Младший байт представляет номер сигнала, прекратившего выполнение процесса, а старший - код состояния, возвращенный процессом по его завершении.
Функция waitpid() модуля os в Python
Функция waitpid() модуля os в Unix: ждет завершения дочернего процесса, заданного идентификатором процесса pid, и возвращает кортеж, содержащий его идентификатор процесса и индикацию состояния выхода, закодированную как для os.wait().
Определение состояния процесса
Следующие функции принимают в качестве параметра `status` код состояния процесса, возвращаемый `os.system()`, `os.wait()` или `os.waitpid()`. Они могут быть использованы для определения диспозиции процесса.
Константы для поддержки операций с путями
Значения используемые для поддержки операций с путями.
Генератор случайных байтов на основе модуля os в Python
Генерация случайных байтов операционной системой.
Функция startfile() модуля os в Python
Функция startfile() модуля os запускает файл в Windows с помощью связанного с ним приложения на основе расширения.
Функция times() модуля os в Python
Функция times() модуля os возвращает текущее время глобального процесса.
Функции getloadavg() и cpu_count() модуля os в Python
В этом разделе представлены функции определения количества ядер сервера и уровня загрузки системы (load average).
Функция waitstatus_to_exitcode() модуля os в Python
Функция waitstatus_to_exitcode() модуля os преобразует статус ожидания в код выхода.
Функция listdrives() модуля os в Python, имена дисков Windows
Новое в Python 3.12. Функция os.listdrives() модуля os возвращает список, содержащий имена дисков в системе Windows.
Функция listmounts() модуля os в Python, точки монтирования Windows
Новое в версии Python 3.12. Функция os.listmounts() модуля os возвращает список, содержащий точки монтирования тома volume в системе Windows.
Функция listvolumes() модуля os в Python, список томов Windows
Новое в Python 3.12. Функция os.listvolumes() модуля os возвращает список, содержащий тома в системе Windows.
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Управление переменной средой окружения системы
- Представление пути в файловой системе
- Извлечение/установка uid, gid и pid процесса
- Наследование файловых дескрипторов
- Создание дескриптора файла, чтение, запись и его закрытие
- Функция listdir() модуля os
- Функция walk() модуля os
- Функция scandir() модуля os
- Объект DirEntry() модуля os
- Функция stat() модуля os
- Объект stat_result, результаты выполнения os.stat()
- Функция lstat() модуля os
- Функция access() модуля os
- Функция chdir() модуля os
- Функция chmod() модуля os
- Функция chown() модуля os
- Функция chroot() модуля os
- Функция getcwd() модуля os
- Функция link() модуля os
- Функция mkdir() модуля os
- Функция makedirs() модуля os
- Функция symlink() модуля os
- Функция readlink() модуля os
- Функция remove() модуля os, удалить файл
- Функция removedirs() модуля os
- Функция rename() модуля os
- Функция renames() модуля os
- Функция replace() модуля os
- Функция rmdir() модуля os
- Функция strerror() модуля os
- Функция supports_dir_fd модуля os
- Функция supports_effective_ids модуля os
- Функция supports_fd модуля os
- Функция supports_follow_symlinks модуля os
- Функция truncate() модуля os
- Функция utime() модуля os
- Манипулирование списком контроля доступа ACL в Linux
- Функция abort() модуля os
- Функция exec*() модуля os
- Функция popen() модуля os
- Функция system() модуля os
- Функция _exit() модуля os
- Функция fork() модуля os
- Функция kill() модуля os
- Функция spawn() модуля os
- Функция umask() модуля os
- Функция uname() модуля os
- Функция wait() модуля os
- Функция waitpid() модуля os
- Определение состояния процесса
- Константы для поддержки операций с путями
- Генератор случайных байтов на основе модуля os
- Функция startfile() модуля os
- Функция times() модуля os
- Функции getloadavg() и cpu_count() модуля os
- Функция waitstatus_to_exitcode() модуля os
- Функция listdrives() модуля os, имена дисков Windows
- Функция listmounts() модуля os, точки монтирования Windows
- Функция listvolumes() модуля os, список томов Windows
Библиотека os
Модуль os из стандартной библиотеки языка программирования Python обычно используется для работы с установленной ОС, а также файловой системой ПК. Он содержит массу полезных методов для взаимодействия с файлами и папками на жестком диске. Программы, работающие с модулем os, не зависят от типа ОС и являются легко переносимыми на другую платформу.
Что такое модуль os?
Модуль os в Python — это библиотека функций для работы с операционной системой. Методы, включенные в неё позволяют определять тип операционной системы, получать доступ к переменным окружения, управлять директориями и файлами:
- проверка существования объекта по заданному пути;
- определение размера в байтах;
- удаление;
- переименование и др.
При вызове функций os необходимо учитывать, что некоторые из них могут не поддерживаться текущей ОС.
Чтобы пользоваться методами из os, нужно подключить библиотеку. Для этого в Python используется import os, который необходимо описать в файле до первого обращения к модулю.
Рекомендуется использовать эту инструкцию в начале файла с исходным кодом.
Функции модуля os
Методы из библиотеки os могут применяться пользователем для разных целей. Ниже показаны наиболее популярные из них, позволяющие получать данные о операционной системе. Также получать сведения о файлах и папках, хранимых в памяти на жестком диске ПК.
Получение информации об ОС
Чтобы узнать имя текущей ОС, достаточно воспользоваться методом name. В зависимости от установленной платформы, он вернет ее короткое наименование в строковом представлении. Следующая программа была запущена на ПК с ОС Windows 10, поэтому результатом работы функции name является строка nt. Увидеть это можно при помощи обычного метода print.
import os print(os.name) nt
Получить сведения, которые касаются конфигурации компьютера, можно при помощи метода environ. Вызвав его через обращение к библиотеке os, пользователь получает большой словарь с переменными окружения, который выводится в консоль или строковую переменную. Таким образом, можно узнать название системного диска, адрес домашней директории, имя системы и массу другой информации. Следующий пример демонстрирует применение environ.
import os print(os.environ) environ()
При помощи функции getenv можно получить доступ к различным переменным среды. Чтобы сделать это, достаточно передать в качестве аргумента необходимое название переменной, как в следующем примере, где print выводит на экран сведения о TMP на дисплей в консоль.
import os print(os.getenv("TMP")) C:\Users\admin\AppData\Local\Temp
Изменение рабочей директории
По умолчанию рабочей директорией программы является каталог, где содержится документ с ее исходным кодом. Благодаря этому, можно не указывать абсолютный путь к файлу, если тот находится именно в этой папке. Получить сведения о текущей директории позволяет функция getcwd, которая возвращает полный адрес рабочего каталога на жестком диске. В следующем фрагменте кода показано что будет, если передать результат работы этого метода в print. Как можно заметить, рабочей директорией является каталог program на системном диске C.
import os print(os.getcwd()) C:\Users\admin\source\repos\program
При желании, рабочую директорию можно настроить по своему усмотрению, применив метод chdir из библиотеки os. Для этого необходимо передать ему в качестве параметра абсолютный адрес к новому каталогу. Если указанного пути на самом деле не существует, программа будет завершена в аварийном режиме из-за выброшенного исключения. В следующем примере кода продемонстрирован переход к новой рабочей директории под названием folder на диске D.
import os os.chdir(r"D:\folder") D:\folder
Проверка существования пути
Чтобы избежать ошибок, связанных с отсутствием определенного файла или директории, которые должны быть обработаны программой, следует предварительно проверять их наличие с помощью метода exists. Передав ему в качестве аргумента путь к нужному файлу или папке, можно рассчитывать на лаконичный ответ в виде булевого значения true/false, сообщающего о наличии/отсутствии указанного объекта в памяти компьютера. В следующем примере идет проверка текстового файла test.txt из корневого каталога D, которая возвращает True.
import os print(os.path.exists("D:/test.txt")) True
Если объект на диске реально существует, это не всегда значит, что он имеет подходящую для дальнейшей обработки форму. Проверить, является ли определенный объект файлом, поможет функция isfile, которая принимает его адрес. Ознакомиться с результатом его работы можно из следующего примера, где print отображает на экране значение True для файла test.txt.
import os print(os.path.isfile("D:/test.txt")) True
Аналогичные действия можно выполнить и для проверки объекта на принадлежность к классу директорий, вызвав для его адреса метод isdir из библиотеки os. Как можно заметить, в данном случае print выводит на экран булево значение False, поскольку test.txt не является папкой.
import os print(os.path.isdir("D:/test.txt")) False
Создание директорий
Возможности модуля os позволяют не только отображать информацию об уже существующих в памяти объектах, но и генерировать абсолютно новые. Например, с помощью метода mkdir довольно легко создать папку, просто указав для нее желаемый путь. В следующем примере в корневом каталоге диска D производится новая папка под названием folder через mkdir.
import os os.mkdir(r"D:\folder")
Однако на этом возможности по генерации директорий не заканчиваются. Благодаря функции makedirs можно создавать сразу несколько новых папок в неограниченном количестве, если предыдущая директория является родительской для следующей. Таким образом, в следующем примере показывается генерация целой цепочки папок из folder, first, second и third.
import os os.makedirs(r"D:\folder\first\second\third")
Удаление файлов и директорий
Избавиться от ненужного в дальнейшей работе файла можно с помощью метода remove, отдав ему в качестве аргумента абсолютный либо относительный путь к объекту. В небольшом коде ниже демонстрируется удаление документа test.txt из корневой директории диска D на ПК.
import os os.remove(r"D:\test.txt")
Чтобы стереть из памяти папку, следует воспользоваться встроенной функцией rmdir, указав ей адрес объекта. Однако здесь присутствуют определенные нюансы, поскольку программа не позволит беспрепятственно удалить директорию, в которой хранятся другие объекты. В таком случае на экране отобразится ошибка и будет выброшено исключение. В следующем примере производится процедура удаления пустой директории folder при помощи метода rmdir.
import os os.rmdir(r"D:\folder")
Для быстрого удаления множества пустых папок следует вызывать функцию removedirs. Она предоставляет возможность избавиться сразу от нескольких каталогов на диске, при условии, что все они вложены друг в друга. Таким образом, указав путь к конечной папке, можно легко удалить все родительские директории, но только если они в результате оказываются пустыми. В примере показано мгновенное удаление четырех разных папок: folder, first, second, third.
import os os.removedirs(r"D:\folder\first\second\third")
Запуск на исполнение
Встроенные функции библиотеки os позволяют запускать отдельные файлы и папки прямиком из программы. С этой задачей прекрасно справляется метод startfile, которому стоит передать адрес необходимо объекта. Программное обеспечение, используемое для открытия документа, определяется средой автоматически. Например, при запуске обычного файла test.txt, как это сделано в следующем примере, задействуется стандартный блокнот. Если передать функции ссылку на директорию, она будет открыта при помощи встроенного менеджера файлов.
import os os.startfile(r"D:\test.txt")
Получение имени файла и директории
Иногда для взаимодействия с документом необходимо получить его полное имя, включающее разрешение, но не абсолютный путь к нему на диске. Преобразовать адрес объекта в название позволяет функция basename, которая содержится в подмодуле path из библиотеки os. Таким образом, следующий пример показывает преобразование пути test.txt в простое имя файла.
import os print(os.path.basename("D:/test.txt")) test.txt
Обратная ситуация возникает тогда, когда пользователю нужно получить только путь к файлу, без самого названия объекта. Это поможет сделать метод dirname, который возвращает путь к заданному документу в строковом представлении, как это продемонстрировано в небольшом примере ниже. Здесь print выводит на экран адрес текстового документа в папке folder.
import os print(os.path.dirname("D:/folder/test.txt")) D:/folder
Вычисление размера
Чтобы определить размер документа или папки, стоит воспользоваться функцией getsize, как это показано в следующем примере для файла test.txt. Функция print выводит размер данного документа в байтах. Воспользоваться getsize можно и для измерения объема директорий.
import os print(os.path.getsize("D:\\test.txt")) 136226
Переименование
Библиотека os предоставляет возможность быстрой смены названия для любого файла или же каталога при помощи метода rename. Данная функция принимает сразу два разных аргумента. Первый отвечает за путь к старому наименованию документа, в то время как второй отвечает за его новое название. В примере показано переименование директории folder в catalog. Стоит помнить, что метод может генерировать исключение, если по указанному пути нет файла.
import os os.rename(r"D:\folder", r"D:\catalog")
Переименовывать можно не только один каталог, но и несколько папок сразу, только если все они находятся в одной иерархической цепочке. Для этого достаточно вызвать метод renames и передать ему путь к конечной директории в качестве первого аргумента. В роли же второго параметра выступает аналогичный адрес к папке, но только с новыми именами всей цепочки. Следующий пример демонстрирует правильное использование функции renames, за счет чего было произведено переименование директорий folder, first и second в catalog, one и two.
import os os.renames(r"D:\folder\first\second", r"D:\catalog\one\two")
Содержимое директорий
Проверить наличие в каталоге определенных объектов позволяет функция listdir. С её помощью можно получить информацию о файлах и папках в виде списка. В программе немного ниже показано, как метод принимает в качестве параметра путь к каталогу folder на диске D, а затем выводит название внутренней папки first и документа test.txt, вывод в консоль осуществляется с помощью print.
import os print(os.listdir(r"D:\folder")) ['first', 'test.txt']
Воспользовавшись методом walk, можно получить доступ к названиям и путям всех подпапок и файлов, относящихся к заданному каталогу. Применив один внешний цикл for, а также два вложенных, несложно получить информацию об объектах в каталоге folder через специальные списки directories и files. Сведения выдаются с помощью многократного обращения к print.
import os for root, directories, files in os.walk(r"D:\folder"): print(root) for directory in directories: print(directory) for file in files: print(file) D:\folder first D:\folder\first second D:\folder\first\second third D:\folder\first\second\third test.txt
Информация о файлах и директориях
Вывести на экран или в любое другое место основные сведения об объекте можно через метод stat. Поместив ему в качестве параметра расположение файла или папки на диске компьютера, стоит ожидать небольшой массив информации. Здесь можно найти данные о размере объекта в байтах, а также некие числовые значения, отображающие доступ и режим его работы.
import os print(os.stat(r"D:\test.txt")) os.stat_result(st_mode=33206, …)
Обработка путей
Возвращаясь к классу path из библиотеки os, стоит принять во внимание функцию split, позволяющую очень легко разъединять путь к файлу и имя файла в различные строки. Это демонстрируется на следующем примере с текстовым документом test.txt в папке folder.
import os print(os.path.split(r"D:\folder\test.txt")) ('D:\\folder', 'test.txt')
Обратное действие выполняет функция join, позволяя легко соединить путь к документу с его названием. Как видно из результатов работы данного кода, благодаря print на экране будет отображаться путь, который ссылается на текстовый файл test.txt в каталоге folder на D.
import os print(os.path.join(r"D:\folder", "test.txt")) D:\folder\test.txt
Это были базовые возможности модуля os, реализуемые в программах на языке Python за счет множества встроенных методов по управлению установленной ОС. Таким образом, они дают возможность не только получать полезные сведения о платформе, но и работать с содержимым диска, создавая новые директории и файлы, переименовывая и полностью удаляя их.
Python os module

While we believe that this content benefits our community, we have not yet thoroughly reviewed it. If you have any suggestions for improvements, please let us know by clicking the “report an issue“ button at the bottom of the tutorial.
Python OS module provides easy functions that allow us to interact and get Operating System information and even control processes up to a limit.
Python OS Module
The functions OS module provides allows us to operate on underlying Operating System tasks, irrespective of it being a Windows Platform, Macintosh or Linux. In this lesson, we will review these functions and what we can do with these. Let us start our journey with these functions and what information they offer.
Python import os

Please note that first of all we have to import OS module in our program, then only we can execute any of it’s functions.
os.name
This function gives the name of the OS module it imports. This differs based on the underlying Operating System. Currently, it registers ‘posix’, ‘os2’, ‘ce’, ‘nt’, ‘riscos’ and ‘java’. Let’s execute this on the system:
>>> print(os.name) posix
Clearly, this can output different platforms based on the interpreter.
os.environ
environ is not a function but a process parameter through which we can access environment variables of the system. Let’s see sample code snippet:
import os output = os.environ['HOME'] print(output)

When we run this script, the following will be the output: We can use it to work with the environment variables, read more at Python set environment variable.
os.execvp
execvp function is one of the ways to run other commands on the system. Let’s see sample code snippet for this function:
import os program = "python" arguments = ["hello.py"] print(os.execvp(program, (program,) + tuple(arguments)))
For this, we just created a sample script as hello.py with following code:
print('Hello')

When we run this script, the following will be the output:
os.getuid
This os module function returns current process’s user ID or UID, as it is populary known.
>>> os.getuid() 501
So, the current shell process ID is 501.
os.rename
With the python os rename function, we can easily rename a file.
import os fileDir = "JournalDev.txt" os.rename(fd,'JournalDev_Hi.txt')
Note that for this, we must provide correct permissions to our script.
os.system
Python os system function allows us to run a command in the Python script, just like if I was running it in my shell. For example:
import os currentFiles = os.system("users > users.txt")

When I ran this script, a new file was made in the same directory with name users.txt and content String as ‘shubham’ as this is returned by original shell as well: Note that this is a very powerful command and should be used cautiously.
os.error
Python os module error class is the base class for I/O related errors. So we can catch IO errors using OSError in the except clause.
import os try: f = open('abc.txt', 'r') # file is missing except OSError: print('Error')
os.getpid
This function returns current process ID or PID, as it is populary known.
>>> os.getpid() 71622
So, the current shell process’s user ID is 71622.
os.listdir
This function just lists out the files and directories present in the current working directory.
>>> import os >>> os.listdir() ['.DS_Store', '.localized', 'JournalDev', 'Java', 'Python']
It returns an iterable list of directory and file names.
os.uname
This function return information which identifies current Operating System on which this is executed.
>>> os.uname() posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2017; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
That was prettry detailed actually.
import os.path vs import os
- When Python starts, it loads many modules into sys.module .
- os module is also loaded when Python starts. It assigns its path to the os specific module attribute.
- It injects sys.modules['os.path'] = path so that you’re able to do import os.path as though it was a submodule.
Summary
In this lesson, we read about various functions provided by OS module in Python and saw how they work. See more lessons on Python here. Reference: API Doc
Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.
