os — Различные интерфейсы операционной системы

Исходный код: Lib/os.py


Этот модуль предоставляет портативный способ использования функций, зависящих от операционной системы. Если вы просто хотите прочитать или записать файл, обратитесь к open(), если вы хотите манипулировать путями, обратитесь к модулю os.path, а если вы хотите прочитать все строки во всех файлах в командной строке, обратитесь к fileinput модуль. О создании временных файлов и каталогов читайте в модуле tempfile, а о высокоуровневой обработке файлов и каталогов - в модуле shutil.

Примечания о доступности этих функций:

  • Конструкция всех встроенных модулей Python, зависящих от операционной системы, такова, что до тех пор, пока доступна одна и та же функциональность, используется один и тот же интерфейс; например, функция os.stat(path) возвращает статистическую информацию о path в том же формате (который, как оказалось, был создан с интерфейсом POSIX).

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

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

  • В VxWorks os.popen, os.fork, os.execv и os.spawn*p* не поддерживаются.

  • На платформах WebAssembly wasm32-emscripten и wasm32-wasi большие части модуля os недоступны или работают по-другому. API, относящиеся к процессам (например, fork(), execve()), сигналы (например, kill(), wait()), и ресурсы (например, nice()) недоступны. Другие, такие как getuid() и getpid(), являются эмулируемыми или заглушками.

Примечание

Все функции в этом модуле генерируют OSError (или их подклассы) в случае недопустимых или недоступных имен файлов и путей к ним или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.

exception os.error

Псевдоним для встроенного исключения OSError.

os.name

Имя импортированного модуля, зависящего от операционной системы. На данный момент зарегистрированы следующие имена: 'posix', 'nt', 'java'.

См.также

sys.platform имеет более высокую степень детализации. os.uname() содержит информацию о версии, зависящей от системы.

Модуль platform обеспечивает детальную проверку подлинности системы.

Имена файлов, аргументы командной строки и переменные среды

В Python имена файлов, аргументы командной строки и переменные среды представляются с использованием типа string. В некоторых системах перед передачей в операционную систему необходимо расшифровать эти строки в байты и обратно. Python использует filesystem encoding and error handler для выполнения этого преобразования (см. sys.getfilesystemencoding()).

Параметры filesystem encoding and error handler настраиваются при запуске Python с помощью функции PyConfig_Read(): смотрите filesystem_encoding и filesystem_errors, входящие в состав PyConfig.

Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует surrogateescape encoding error handler, что означает, что не поддающиеся расшифровке байты заменяются символом Unicode U+DC*xx* при декодировании, и они снова преобразуются в исходный байт при кодировании.

Значение file system encoding должно гарантировать успешное декодирование всех байт меньше 128. Если кодировка файловой системы не обеспечивает такой гарантии, функции API могут вызвать значение UnicodeError.

Смотрите также locale encoding.

Режим Python UTF-8

Добавлено в версии 3.7: Смотрите PEP 540 для получения более подробной информации.

Режим Python UTF-8 игнорирует locale encoding и принудительно использует кодировку UTF-8:

Обратите внимание, что стандартные настройки потока в режиме UTF-8 могут быть заменены на PYTHONIOENCODING (точно так же, как они могут быть заменены в режиме с учетом языковых стандартов по умолчанию).

Как следствие изменений в этих низкоуровневых API, другие высокоуровневые API также демонстрируют иное поведение по умолчанию:

  • Аргументы командной строки, переменные окружения и имена файлов преобразуются в текст с использованием кодировки UTF-8.

  • os.fsdecode() и os.fsencode() используют кодировку UTF-8.

  • open(), io.open(), и codecs.open() по умолчанию используйте кодировку UTF-8. Однако они по-прежнему используют строгий обработчик ошибок по умолчанию, так что попытка открыть двоичный файл в текстовом режиме, скорее всего, вызовет исключение, а не выдаст бессмысленные данные.

Параметр Python UTF-8 Mode включен, если языковой стандарт LC_CTYPE равен C или POSIX при запуске Python (смотрите функцию PyConfig_Read()).

Его можно включить или отключить с помощью параметра командной строки -X utf8 и переменной окружения PYTHONUTF8.

Если переменная среды PYTHONUTF8 вообще не задана, то интерпретатор по умолчанию использует текущие настройки языкового стандарта, если только текущий языковой стандарт не идентифицирован как устаревший языковой стандарт на основе ASCII (как описано для PYTHONCOERCECLOCALE), и приведение к языковому стандарту не выполняется. либо отключен, либо выходит из строя. В таких устаревших языковых стандартах интерпретатор по умолчанию будет включать режим UTF-8, если только явно не указано, что этого делать нельзя.

Режим Python UTF-8 может быть включен только при запуске Python. Его значение можно прочитать из sys.flags.utf8_mode.

Смотрите также UTF-8 mode on Windows и filesystem encoding and error handler.

См.также

PEP 686

В Python 3.15 по умолчанию будет установлено значение Режим Python UTF-8.

Параметры процесса

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

os.ctermid()

Возвращает имя файла, соответствующее управляющему терминалу процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

os.environ

Объект mapping, ключи и значения которого являются строками, представляющими среду процесса. Например, environ['HOME'] - это путь к вашему домашнему каталогу (на некоторых платформах), который эквивалентен getenv("HOME") в C.

Это сопоставление фиксируется при первом импорте модуля os, как правило, во время запуска Python как части обработки site.py. Изменения в среде, внесенные после этого времени, не отражаются в os.environ, за исключением изменений, внесенных путем прямого изменения os.environ.

Это сопоставление может использоваться для изменения среды, а также для запроса к среде. putenv() будет вызываться автоматически при изменении сопоставления.

В Unix ключи и значения используют обработчик ошибок sys.getfilesystemencoding() и 'surrogateescape'. Используйте environb, если вы хотите использовать другую кодировку.

В Windows клавиши преобразуются в верхний регистр. Это также применяется при получении, настройке или удалении элемента. Например, environ['monty'] = 'python' сопоставляет ключ 'MONTY' со значением 'python'.

Примечание

Прямой вызов putenv() не изменяет os.environ, поэтому лучше изменить os.environ.

Примечание

На некоторых платформах, включая FreeBSD и macOS, установка environ может привести к утечке памяти. Обратитесь к документации по системе для putenv().

Вы можете удалять элементы в этом сопоставлении с неустановленными переменными среды. unsetenv() будет вызываться автоматически при удалении элемента из os.environ и при вызове одного из методов pop() или clear().

Изменено в версии 3.9: Обновлено для поддержки PEP 584 операторов слияния (|) и обновления (|=).

os.environb

Байтовая версия environ: объект mapping, в котором оба ключа и значения являются bytes объектами, представляющими среду процесса. environ и environb синхронизированы (изменяя environb обновляет environ, и наоборот).

environb доступно только в том случае, если supports_bytes_environ равно True.

Добавлено в версии 3.2.

Изменено в версии 3.9: Обновлено для поддержки PEP 584 операторов слияния (|) и обновления (|=).

os.chdir(path)
os.fchdir(fd)
os.getcwd()

Эти функции описаны в разделе Файлы и каталоги.

os.fsencode(filename)

Закодируйте path-like имя файла в filesystem encoding and error handler; верните bytes без изменений.

fsdecode() - это обратная функция.

Добавлено в версии 3.2.

Изменено в версии 3.6: Добавлена поддержка для приема объектов, реализующих интерфейс os.PathLike.

os.fsdecode(filename)

Расшифруйте path-like имя файла из filesystem encoding and error handler; верните str без изменений.

fsencode() - это обратная функция.

Добавлено в версии 3.2.

Изменено в версии 3.6: Добавлена поддержка для приема объектов, реализующих интерфейс os.PathLike.

os.fspath(path)

Возвращает представление пути в файловой системе.

Если ввести значение str или bytes, оно будет возвращено без изменений. В противном случае вызывается __fspath__() и возвращается его значение, если это объект str или bytes. Во всех остальных случаях вызывается значение TypeError.

Добавлено в версии 3.6.

class os.PathLike

abstract base class для объектов, представляющих путь к файловой системе, например pathlib.PurePath.

Добавлено в версии 3.6.

abstractmethod __fspath__()

Возвращает представление пути к файловой системе объекта.

Метод должен возвращать только объект str или bytes, при этом предпочтение отдается str.

os.getenv(key, default=None)

Возвращает значение переменной окружения key в виде строки, если она существует, или default, если ее нет. key - это строка. Обратите внимание, что, поскольку getenv() использует os.environ, отображение getenv() аналогично фиксируется при импорте, и функция может не отражать будущие изменения среды.

В Unix ключи и значения декодируются с помощью обработчика ошибок sys.getfilesystemencoding() и 'surrogateescape'. Используйте os.getenvb(), если вы хотите использовать другую кодировку.

Availability: Unix, Windows.

os.getenvb(key, default=None)

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

getenvb() доступно только в том случае, если supports_bytes_environ равно True.

Availability: Unix.

Добавлено в версии 3.2.

os.get_exec_path(env=None)

Возвращает список каталогов, в которых будет выполняться поиск именованного исполняемого файла, аналогично оболочке, при запуске процесса. env, если он указан, должен быть словарем переменных среды для поиска ПУТИ. По умолчанию, когда используется значение env None, environ.

Добавлено в версии 3.2.

os.getegid()

Возвращает эффективный идентификатор группы текущего процесса. Это соответствует разряду «set id» в файле, выполняемом в текущем процессе.

Availability: Unix, не Emscripten, не БЫЛ I.

os.geteuid()

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.getgid()

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

Availability: Unix.

Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.

os.getgrouplist(user, group, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.getgroups()

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

Availability: Unix, не Emscripten, не БЫЛ I.

Примечание

В Mac OS поведение getgroups() несколько отличается от поведения на других платформах Unix. Если интерпретатор Python был создан с целью развертывания 10.5 или более ранней версией, getgroups() возвращает список действующих идентификаторов групп, связанных с текущим пользовательским процессом; этот список ограничен определенным системой количеством записей, обычно 16, и может может быть изменен вызовами setgroups() при наличии соответствующих привилегий. При построении с целью развертывания, превышающей 10.5, getgroups() возвращает текущий список групп доступа для пользователя, связанного с действующим идентификатором пользователя процесса; список группового доступа может меняться в течение всего срока действия процесса, на него не влияют вызовы setgroups(), и его длина не ограничена 16. Целевое значение развертывания, MACOSX_DEPLOYMENT_TARGET, можно получить с помощью sysconfig.get_config_var().

os.getlogin()

Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей более полезно использовать getpass.getuser(), поскольку последний проверяет переменные среды LOGNAME или USERNAME, чтобы узнать, кто является пользователем, и возвращается к pwd.getpwuid(os.getuid())[0], чтобы получить имя пользователя, соответствующее текущему реальному идентификатору пользователя.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

os.getpgid(pid)

Возвращает идентификатор группы процессов с помощью идентификатора процесса pid. Если значение pid равно 0, возвращается идентификатор группы процессов текущего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

os.getpgrp()

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.getpid()

Возвращает текущий идентификатор процесса.

Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.

os.getppid()

Возвращает идентификатор родительского процесса. Когда родительский процесс завершает работу, в Unix возвращается идентификатор процесса инициализации (1), в Windows это все тот же идентификатор, который может быть повторно использован другим процессом.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

Изменено в версии 3.2: Добавлена поддержка Windows.

os.getpriority(which, who)

Получите приоритет при планировании программы. Значение , которое является одним из PRIO_PROCESS, PRIO_PGRP, или PRIO_USER, и who интерпретируется относительно which (идентификатор процесса для PRIO_PROCESS, идентификатор группы процессов для PRIO_PGRP и идентификатор пользователя для PRIO_USER). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.PRIO_PROCESS
os.PRIO_PGRP
os.PRIO_USER

Параметры для функций getpriority() и setpriority().

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.getresuid()

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

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.2.

os.getresgid()

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

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.2.

os.getuid()

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

Availability: Unix.

Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.

os.initgroups(username, gid, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.2.

os.putenv(key, value, /)

Присвойте переменной среды с именем key значение string value. Такие изменения в среде влияют на подпроцессы, запускаемые с помощью os.system(), popen() или fork() и execv().

Назначения элементам в os.environ автоматически преобразуются в соответствующие вызовы в putenv(); однако вызовы в putenv() не обновляют os.environ, поэтому на самом деле предпочтительнее назначать элементам из os.environ. Это также относится к getenv() и getenvb(), которые соответственно используют os.environ и os.environb в своих реализациях.

Примечание

На некоторых платформах, включая FreeBSD и macOS, установка environ может привести к утечке памяти. Обратитесь к документации по системе для putenv().

Создает auditing event os.putenv с аргументами key, value.

Изменено в версии 3.9: Теперь эта функция доступна всегда.

os.setegid(egid, /)

Установите действующий идентификатор группы для текущего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

os.seteuid(euid, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.setgid(gid, /)

Установите идентификатор группы текущего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

os.setgroups(groups, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

Примечание

В macOS длина groups не может превышать заданного системой максимального количества эффективных идентификаторов групп, обычно 16. Смотрите документацию для getgroups() о случаях, когда при вызове функции setgroups() может быть возвращен не тот же список групп, что и при вызове функции setgroups().

os.setpgrp()

Вызовите системный вызов : c:func:!setpgrp или setpgrp(0, 0) в зависимости от того, какая версия реализована (если таковая имеется). Семантику смотрите в руководстве по Unix.

Availability: Unix, не Emscripten, не БЫЛ I.

os.setpgid(pid, pgrp, /)

Вызовите системный вызов:c:func:!setpgid, чтобы присвоить идентификатору группы процессов с идентификатором pid значение группы процессов с идентификатором pgrp. Семантику смотрите в руководстве по Unix.

Availability: Unix, не Emscripten, не БЫЛ I.

os.setpriority(which, who, priority)

Установите приоритет планирования программы. Значение , которое является одним из PRIO_PROCESS, PRIO_PGRP, или PRIO_USER, и who интерпретируется относительно which (идентификатор процесса для PRIO_PROCESS, идентификатор группы процессов для PRIO_PGRP и идентификатор пользователя для PRIO_USER). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. priority - это значение в диапазоне от -20 до 19. Приоритет по умолчанию равен 0; более низкие приоритеты обеспечивают более благоприятное планирование.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.setregid(rgid, egid, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.setresgid(rgid, egid, sgid, /)

Установите реальные, эффективные и сохраненные идентификаторы групп для текущего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.2.

os.setresuid(ruid, euid, suid, /)

Установите реальные, эффективные и сохраненные идентификаторы пользователей текущего процесса.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.2.

os.setreuid(ruid, euid, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.getsid(pid, /)

Вызовите системный вызов getsid(). Семантику смотрите в руководстве по Unix.

Availability: Unix, не Emscripten, не БЫЛ I.

os.setsid()

Вызовите системный вызов setsid(). Семантику смотрите в руководстве по Unix.

Availability: Unix, не Emscripten, не БЫЛ I.

os.setuid(uid, /)

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.strerror(code, /)

Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где strerror() возвращает NULL при указании неизвестного номера ошибки, выводится значение ValueError.

os.supports_bytes_environ

True если тип собственной операционной системы для среды - bytes (например, False в Windows).

Добавлено в версии 3.2.

os.umask(mask, /)

Установите текущую числовую umask и верните предыдущую umask.

Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.

os.uname()

Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение представляет собой объект с пятью атрибутами:

  • sysname - название операционной системы

  • nodename - имя компьютера в сети (определяется реализацией)

  • release - версия операционной системы

  • version - версия операционной системы

  • machine - идентификатор оборудования

Для обеспечения обратной совместимости этот объект также является итерационным и ведет себя как кортеж из пяти элементов, содержащий sysname, nodename, release, version, и machine в указанном порядке.

Некоторые системы сокращают nodename до 8 символов или начального компонента; лучший способ получить имя хоста - socket.gethostname() или даже socket.gethostbyaddr(socket.gethostname()).

Availability: Unix.

Изменено в версии 3.3: Возвращаемый тип изменен с кортежа на объект, подобный кортежу, с именованными атрибутами.

os.unsetenv(key, /)

Отмените установку (удалите) переменной среды с именем key. Такие изменения в среде влияют на подпроцессы, запускаемые с помощью os.system(), popen() или fork() и execv().

Удаление элементов из os.environ автоматически преобразуется в соответствующий вызов unsetenv(); однако вызовы unsetenv() не обновляют os.environ, поэтому на самом деле предпочтительнее удалять элементы из os.environ.

Создает auditing event os.unsetenv с аргументом key.

Изменено в версии 3.9: Эта функция доступна не всегда и также доступна в Windows.

Создание файлового объекта

Эти функции создают новые file objects. (Смотрите также open() для открытия файловых дескрипторов.)

os.fdopen(fd, *args, **kwargs)

Возвращает открытый файловый объект, связанный с файловым дескриптором fd. Это псевдоним встроенной функции open(), который принимает те же аргументы. Единственное отличие заключается в том, что первый аргумент fdopen() всегда должен быть целым числом.

Операции с файловыми дескрипторами

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

Файловые дескрипторы - это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартным вводом обычно является файловый дескриптор 0, стандартным выводом - 1, а стандартной ошибкой - 2. Дальнейшим файлам, открываемым процессом, будет присвоено 3, 4, 5 и так далее. Название «файловый дескриптор» немного вводит в заблуждение; на платформах Unix файловые дескрипторы также ссылаются на сокеты и каналы передачи данных.

При необходимости можно использовать метод fileno() для получения файлового дескриптора, связанного с file object. Обратите внимание, что прямое использование файлового дескриптора позволит обойти методы файлового объекта, игнорируя такие аспекты, как внутренняя буферизация данных.

os.close(fd)

Закройте файловый дескриптор fd.

Примечание

Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому os.open() или pipe(). Чтобы закрыть «файловый объект», возвращаемый встроенной функцией open() или popen() или fdopen(), используйте ее метод close().

os.closerange(fd_low, fd_high, /)

Закройте все файловые дескрипторы от fd_low (включительно) до fd_high (исключительно), игнорируя ошибки. Эквивалентно (но намного быстрее, чем):

for fd in range(fd_low, fd_high):
    try:
        os.close(fd)
    except OSError:
        pass
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)

Скопируйте количество байт из файлового дескриптора src, начиная со смещения offset_src, в файловый дескриптор dst, начиная со смещения offset_dst. Если offset_src равно None, то src считывается из текущей позиции; соответственно для offset_dst. Файлы, на которые указывают src и dst, должны находиться в одной и той же файловой системе, в противном случае OSError вызывается с помощью errno, установленного на errno.EXDEV.

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

Возвращаемое значение - это количество скопированных байт. Это может быть меньше запрошенного количества.

Availability: Linux >= 4.5 с glibc >= 2.27.

Добавлено в версии 3.8.

os.device_encoding(fd)

Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; в противном случае возвращает None.

В Unix, если параметр Python UTF-8 Mode включен, возвращает 'UTF-8', а не кодировку устройства.

Изменено в версии 3.10: В Unix эта функция теперь реализует режим Python UTF-8.

os.dup(fd, /)

Возвращает дубликат файлового дескриптора fd. Новым файловым дескриптором будет non-inheritable.

В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новым файловым дескриптором будет inheritable.

Availability: это был не я.

Изменено в версии 3.4: Новый файловый дескриптор теперь не передается по наследству.

os.dup2(fd, fd2, inheritable=True)

Продублируйте файловый дескриптор fd в fd2, при необходимости закрыв сначала последний. Верните fd2. Новый файловый дескриптор по умолчанию имеет значение inheritable или не наследуется, если значение наследуемый равно False.

Availability: это был не я.

Изменено в версии 3.4: Добавьте необязательный параметр наследуемый.

Изменено в версии 3.7: Верните fd2 в случае успеха. Ранее всегда возвращалось значение None.

os.fchmod(fd, mode)

Измените режим файла, указанный в fd, на числовой mode. Возможные значения mode смотрите в документации для chmod(). Начиная с версии Python 3.3, это эквивалентно os.chmod(fd, mode).

Создает auditing event os.chmod с аргументами path, mode, dir_fd.

Availability: Unix.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

os.fchown(fd, uid, gid)

Измените идентификатор владельца и группы файла, указанный в fd, на числовой uid и gid. Чтобы оставить один из идентификаторов неизменным, установите его равным -1. Смотрите chown(). Начиная с Python 3.3, это эквивалентно os.chown(fd, uid, gid).

Создает auditing event os.chown с аргументами path, uid, gid, dir_fd.

Availability: Unix.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

os.fdatasync(fd)

Принудительная запись файла с помощью filedescriptor fd на диск. Не приводит к принудительному обновлению метаданных.

Availability: Unix.

Примечание

Эта функция недоступна в Mac OS.

os.fpathconf(fd, name, /)

Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. имя указывает значение конфигурации для извлечения; это может быть строка, представляющая собой имя определенного системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, указаны в словаре pathconf_names. Для переменных конфигурации, не включенных в это сопоставление, также допускается передача целого числа вместо name.

Если name является строкой и не известен, то выводится значение ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно включено в pathconf_names, для номера ошибки генерируется OSError с errno.EINVAL.

Начиная с Python 3.3, это эквивалентно os.pathconf(fd, name).

Availability: Unix.

os.fstat(fd)

Получаем статус файлового дескриптора fd. Возвращаем объект stat_result.

Начиная с Python 3.3, это эквивалентно os.stat(fd).

См.также

Функция stat().

os.fstatvfs(fd, /)

Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором fd, например, statvfs(). Начиная с версии Python 3.3, это эквивалентно os.statvfs(fd).

Availability: Unix.

os.fsync(fd)

Принудительная запись файла на диск с помощью filedescriptor fd. В Unix для этого вызывается функция native fsync(); в Windows - функция MS _commit().

Если вы начинаете с буферизованного Python file object f, сначала выполните f.flush(), а затем os.fsync(f.fileno()), чтобы убедиться, что все внутренние буферы, связанные с f, записаны на диск.

Availability: Unix, Windows.

os.ftruncate(fd, length, /)

Обрежьте файл, соответствующий файловому дескриптору fd, так, чтобы его размер был не более длины в байтах. Начиная с версии Python 3.3, это эквивалентно os.truncate(fd, length).

Создает auditing event os.truncate с аргументами fd, length.

Availability: Unix, Windows.

Изменено в версии 3.5: Добавлена поддержка Windows

os.get_blocking(fd, /)

Установите режим блокировки файлового дескриптора: False, если установлен флаг O_NONBLOCK, True, если флаг снят.

Смотрите также set_blocking() и socket.socket.setblocking().

Availability: Unix.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

Добавлено в версии 3.5.

os.isatty(fd, /)

Возвращает True, если файловый дескриптор fd открыт и подключен к устройству, подобному tty, в противном случае False.

os.lockf(fd, cmd, len, /)

Примените, протестируйте или снимите блокировку POSIX для открытого файлового дескриптора. fd - это открытый файловый дескриптор. cmd указывает используемую команду - одну из F_LOCK, F_TLOCK, F_ULOCK или F_TEST. len указывает раздел файла, который необходимо заблокировать.

Создает auditing event os.lockf с аргументами fd, cmd, len.

Availability: Unix.

Добавлено в версии 3.3.

os.F_LOCK
os.F_TLOCK
os.F_ULOCK
os.F_TEST

Флаги, указывающие, какое действие будет выполнено lockf().

Availability: Unix.

Добавлено в версии 3.3.

os.login_tty(fd, /)

Подготовьте tty, файловым дескриптором которого является fd, для нового сеанса входа в систему. Сделайте вызывающий процесс ведущим сеансом; сделайте tty управляющим tty, stdin, stdout и stderr вызывающего процесса; закройте fd.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.11.

os.lseek(fd, pos, whence, /)

Установите текущее положение файлового дескриптора fd в положение pos, измененное на whence, и верните новое положение в байтах относительно начала файла. Допустимыми значениями для whence являются:

  • SEEK_SET или 0 – установить pos относительно начала файла

  • SEEK_CUR или 1 – установить pos относительно текущего положения файла

  • SEEK_END или 2 – установить pos относительно конца файла

  • SEEK_HOLE – установите pos в качестве следующего местоположения данных относительно pos

  • SEEK_DATA – установите pos на следующую ячейку данных относительно pos

Изменено в версии 3.3: Добавьте поддержку SEEK_HOLE и SEEK_DATA.

os.SEEK_SET
os.SEEK_CUR
os.SEEK_END

Параметры для функции lseek() и метода seek() в file-like objects, с помощью которых можно настроить индикатор положения файла.

SEEK_SET

Отрегулируйте положение файла относительно начала файла.

SEEK_CUR

Отрегулируйте положение файла относительно текущего положения файла.

SEEK_END

Отрегулируйте положение файла относительно конца файла.

Их значения равны 0, 1 и 2 соответственно.

os.SEEK_HOLE
os.SEEK_DATA

Параметры функции lseek() и метода seek() в file-like objects для поиска файловых данных и пробелов в редко размещенных файлах.

SEEK_DATA

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

SEEK_HOLE

Измените смещение файла до следующего местоположения, содержащего отверстие, относительно позиции поиска. Отверстие определяется как последовательность нулей.

Примечание

Эти операции имеют смысл только для файловых систем, которые их поддерживают.

Availability: Linux >= 3.1, macOS, Unix

Добавлено в версии 3.3.

os.open(path, flags, mode=0o777, *, dir_fd=None)

Откройте файл path и установите различные флаги в соответствии с flags и, возможно, его режим в соответствии с mode. При вычислении mode текущее значение umask сначала маскируется. Верните файловый дескриптор для вновь открытого файла. Новый файловый дескриптор будет иметь значение non-inheritable.

Описание значений флага и режима смотрите в документации по среде выполнения C; константы флага (например, O_RDONLY и O_WRONLY) определены в модуле os. В частности, в Windows для открытия файлов в двоичном режиме необходимо добавить O_BINARY.

Эта функция может поддерживать paths relative to directory descriptors с параметром dir_fd.

Создает auditing event open с аргументами path, mode, flags.

Изменено в версии 3.4: Новый файловый дескриптор теперь не передается по наследству.

Примечание

Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию open(), которая возвращает значение file object с помощью методов read() и write() (и многих других). Чтобы обернуть файловый дескриптор в файловый объект, используйте fdopen().

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение смотрите в PEP 475).

Изменено в версии 3.6: Принимает значение path-like object.

Следующие константы являются параметрами для параметра flags функции open(). Их можно комбинировать с помощью побитового оператора OR |. Некоторые из них доступны не на всех платформах. Для получения описаний их доступности и использования обратитесь к странице руководства open(2) в Unix или the MSDN в Windows.

os.O_RDONLY
os.O_WRONLY
os.O_RDWR
os.O_APPEND
os.O_CREAT
os.O_EXCL
os.O_TRUNC

Вышеуказанные константы доступны в Unix и Windows.

os.O_DSYNC
os.O_RSYNC
os.O_SYNC
os.O_NDELAY
os.O_NONBLOCK
os.O_NOCTTY
os.O_CLOEXEC

Приведенные выше константы доступны только в Unix.

Изменено в версии 3.3: Добавьте константу O_CLOEXEC.

os.O_BINARY
os.O_NOINHERIT
os.O_SHORT_LIVED
os.O_TEMPORARY
os.O_RANDOM
os.O_SEQUENTIAL
os.O_TEXT

Вышеуказанные константы доступны только в Windows.

os.O_EVTONLY
os.O_FSYNC
os.O_NOFOLLOW_ANY

Вышеуказанные константы доступны только в Mac OS.

Изменено в версии 3.10: Добавьте константы O_EVTONLY, O_FSYNC, O_SYMLINK и O_NOFOLLOW_ANY.

os.O_ASYNC
os.O_DIRECT
os.O_DIRECTORY
os.O_NOFOLLOW
os.O_NOATIME
os.O_PATH
os.O_TMPFILE
os.O_SHLOCK
os.O_EXLOCK

Приведенные выше константы являются расширениями и не присутствуют, если они не определены библиотекой C.

Изменено в версии 3.4: Добавьте O_PATH в системах, которые его поддерживают. Добавьте O_TMPFILE, доступно только в ядре Linux версии 3.11 или новее.

os.openpty()

Откройте новую пару псевдотерминалов. Верните пару файловых дескрипторов (master, slave) для pti и tty соответственно. Новыми файловыми дескрипторами будут non-inheritable. Для (немного) более портативного подхода используйте модуль pty.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.4: Новые файловые дескрипторы теперь не передаются по наследству.

os.pipe()

Создайте канал. Верните пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно. Новым файловым дескриптором будет non-inheritable.

Availability: Unix, Windows.

Изменено в версии 3.4: Новые файловые дескрипторы теперь не передаются по наследству.

os.pipe2(flags, /)

Создайте канал с флагами, установленными атомарно. флаги могут быть созданы путем объединения одного или нескольких из этих значений: O_NONBLOCK, O_CLOEXEC. Возвращает пару файловых дескрипторов (r, w), пригодных для чтения и записи соответственно.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.posix_fallocate(fd, offset, len, /)

Гарантирует, что для файла, указанного в fd, выделено достаточно места на диске, начиная с offset и продолжая len байтами.

Availability: Unix, а не Emscripten.

Добавлено в версии 3.3.

os.posix_fadvise(fd, offset, len, advice, /)

Объявляет о намерении получить доступ к данным по определенному шаблону, что позволяет ядру выполнить оптимизацию. Совет применим к области файла, указанной в fd, начиная с offset и заканчивая len байтами. совет - это один из POSIX_FADV_NORMAL, POSIX_FADV_SEQUENTIAL, POSIX_FADV_RANDOM, POSIX_FADV_NOREUSE, POSIX_FADV_WILLNEED или POSIX_FADV_DONTNEED.

Availability: Unix.

Добавлено в версии 3.3.

os.POSIX_FADV_NORMAL
os.POSIX_FADV_SEQUENTIAL
os.POSIX_FADV_RANDOM
os.POSIX_FADV_NOREUSE
os.POSIX_FADV_WILLNEED
os.POSIX_FADV_DONTNEED

Флаги, которые могут быть использованы в рекомендации в posix_fadvise(), которые определяют шаблон доступа, который, вероятно, будет использоваться.

Availability: Unix.

Добавлено в версии 3.3.

os.pread(fd, n, offset, /)

Считайте не более n байт из файлового дескриптора fd в позиции offset, оставляя смещение файла неизменным.

Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустой объект bytes.

Availability: Unix.

Добавлено в версии 3.3.

os.preadv(fd, buffers, offset, flags=0, /)

Считывается из файлового дескриптора fd в позиции offset в изменяемые bytes-like objects буферы, оставляя смещение файла неизменным. Переносите данные в каждый буфер до тех пор, пока он не заполнится, а затем переходите к следующему буферу в последовательности для хранения остальных данных.

Аргумент flags содержит побитовое значение ИЛИ, равное нулю или более, из следующих флагов:

Возвращает общее количество фактически прочитанных байт, которое может быть меньше общей емкости всех объектов.

Операционная система может установить ограничение (sysconf() значение 'SC_IOV_MAX') на количество буферов, которые могут быть использованы.

Объедините функциональность os.readv() и os.pread().

Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Для использования флагов требуется Linux >= 4.6.

Добавлено в версии 3.7.

os.RWF_NOWAIT

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

Если какие-то данные были успешно считаны, он вернет количество прочитанных байт. Если ни один байт не был прочитан, он вернет -1 и установит значение errno равным errno.EAGAIN.

Availability: Linux >= 4.14.

Добавлено в версии 3.7.

os.RWF_HIPRI

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

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

Availability: Linux >= 4.6.

Добавлено в версии 3.7.

os.pwrite(fd, str, offset, /)

Запишите байтовую строку в str в файловый дескриптор fd в позиции offset, оставив смещение файла неизменным.

Возвращает количество фактически записанных байт.

Availability: Unix.

Добавлено в версии 3.3.

os.pwritev(fd, buffers, offset, flags=0, /)

Запишите содержимое буферов в файловый дескриптор fd со смещением offset, оставив смещение файла неизменным. буферы должны быть последовательностью bytes-like objects. Буферы обрабатываются в порядке массива. Все содержимое первого буфера записывается перед переходом ко второму, и так далее.

Аргумент flags содержит побитовое значение ИЛИ, равное нулю или более, из следующих флагов:

Возвращает общее количество фактически записанных байт.

Операционная система может установить ограничение (sysconf() значение 'SC_IOV_MAX') на количество буферов, которые могут быть использованы.

Объедините функциональность os.writev() и os.pwrite().

Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.

Для использования флагов требуется Linux >= 4.6.

Добавлено в версии 3.7.

os.RWF_DSYNC

Укажите эквивалент флага O_DSYNC os.open() для каждой записи. Этот эффект флага применяется только к диапазону данных, записанному системным вызовом.

Availability: Linux >= 4.7.

Добавлено в версии 3.7.

os.RWF_SYNC

Укажите эквивалент флага O_SYNC os.open() для каждой записи. Этот эффект флага применяется только к диапазону данных, записанному системным вызовом.

Availability: Linux >= 4.7.

Добавлено в версии 3.7.

os.RWF_APPEND

Укажите эквивалент флага O_APPEND os.open() для каждой записи. Этот флаг имеет значение только для os.pwritev(), и его действие распространяется только на диапазон данных, записанный системным вызовом. Параметр offset не влияет на операцию записи; данные всегда добавляются в конец файла. Однако, если параметр offset равен -1, текущий файл offset обновляется.

Availability: Linux >= 4.16.

Добавлено в версии 3.10.

os.read(fd, n, /)

Считывает не более n байт из файлового дескриптора fd.

Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустой объект bytes.

Примечание

Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому os.open() или pipe(). Чтобы прочитать «файловый объект», возвращаемый встроенной функцией open() или popen(), или fdopen(), или sys.stdin, используйте ее read() или readline() методы.

Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение смотрите в PEP 475).

os.sendfile(out_fd, in_fd, offset, count)
os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)

Скопируйте количество байт из файлового дескриптора in_fd в файловый дескриптор out_fd, начиная с offset. Верните количество отправленных байт. При достижении EOF верните 0.

Первое обозначение функции поддерживается всеми платформами, которые определяют sendfile().

В Linux, если значение offset задано как None, байты считываются из текущей позиции in_fd и позиция in_fd обновляется.

Второй вариант может использоваться в macOS и FreeBSD, где headers и trailers представляют собой произвольные последовательности буферов, которые записываются до и после записи данных из in_fd. Он возвращает то же, что и в первом случае.

В macOS и FreeBSD значение 0 для параметра count указывает на отправку до тех пор, пока не будет достигнут конец параметра in_fd.

Все платформы поддерживают сокеты в качестве файлового дескриптора out_fd, а некоторые платформы допускают и другие типы (например, обычный файл, pipe).

Кроссплатформенные приложения не должны использовать аргументы headers, trailers и flags.

Availability: Unix, не Emscripten, не БЫЛ I.

Примечание

Более высокоуровневую оболочку для sendfile() смотрите в socket.socket.sendfile().

Добавлено в версии 3.3.

Изменено в версии 3.9: Параметры out и in были переименованы в out_fd и in_fd.

os.SF_NODISKIO
os.SF_MNOWAIT
os.SF_SYNC

Параметры функции sendfile(), если они поддерживаются реализацией.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.SF_NOCACHE

Параметр функции sendfile(), если это поддерживается реализацией. Данные не будут кэшироваться в виртуальной памяти и будут освобождены впоследствии.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.11.

os.set_blocking(fd, blocking, /)

Установите режим блокировки для указанного файлового дескриптора. Установите флажок O_NONBLOCK, если для блокировки используется значение False, в противном случае снимите флажок.

Смотрите также get_blocking() и socket.socket.setblocking().

Availability: Unix.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

Добавлено в версии 3.5.

os.splice(src, dst, count, offset_src=None, offset_dst=None)

Перенесите количество байт из файлового дескриптора src, начиная со смещения offset_src, в файловый дескриптор dst, начиная со смещения offset_dst. По крайней мере, один из файловых дескрипторов должен ссылаться на канал. Если значение offset_src равно None, то значение src считывается с текущей позиции; соответственно для offset_dst. Смещение, связанное с файловым дескриптором, который ссылается на канал, должно быть None. Файлы, на которые указывают src и dst, должны находиться в одной и той же файловой системе, в противном случае для OSError вызывается значение errno, равное errno.EXDEV.

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

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

Availability: Linux >= 2.6.17 с glibc >= 2.5

Добавлено в версии 3.10.

os.SPLICE_F_MOVE
os.SPLICE_F_NONBLOCK
os.SPLICE_F_MORE

Добавлено в версии 3.10.

os.readv(fd, buffers, /)

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

Возвращает общее количество фактически прочитанных байт, которое может быть меньше общей емкости всех объектов.

Операционная система может установить ограничение (sysconf() значение 'SC_IOV_MAX') на количество буферов, которые могут быть использованы.

Availability: Unix.

Добавлено в версии 3.3.

os.tcgetpgrp(fd, /)

Возвращает группу процессов, связанную с терминалом, заданную с помощью fd (открытый файловый дескриптор, возвращаемый с помощью os.open()).

Availability: Unix, как и я.

os.tcsetpgrp(fd, pg, /)

Установите для группы процессов, связанной с терминалом, заданным с помощью fd (дескриптор открытого файла, возвращаемый с помощью os.open()), значение pg.

Availability: Unix, как и я.

os.ttyname(fd, /)

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

Availability: Unix.

os.write(fd, str, /)

Запишите байтовую строку в формате str в файловый дескриптор fd.

Возвращает количество фактически записанных байт.

Примечание

Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому os.open() или pipe(). Чтобы записать «файловый объект», возвращаемый встроенной функцией open(), или popen(), или fdopen(), или sys.stdout, или sys.stderr, используйте ее write() способ.

Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение смотрите в PEP 475).

os.writev(fd, buffers, /)

Запишите содержимое buffers в файловый дескриптор fd. буферы должны быть последовательностью bytes-like objects. Буферы обрабатываются в порядке массива. Все содержимое первого буфера записывается перед переходом ко второму, и так далее.

Возвращает общее количество фактически записанных байт.

Операционная система может установить ограничение (sysconf() значение 'SC_IOV_MAX') на количество буферов, которые могут быть использованы.

Availability: Unix.

Добавлено в версии 3.3.

Запрос размера терминала

Добавлено в версии 3.3.

os.get_terminal_size(fd=STDOUT_FILENO, /)

Возвращает размер окна терминала в виде (columns, lines), кортеж типа terminal_size.

Необязательный аргумент fd (по умолчанию STDOUT_FILENO или стандартный вывод) указывает, какой файловый дескриптор следует запросить.

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

shutil.get_terminal_size() - это высокоуровневая функция, которая обычно должна использоваться, os.get_terminal_size - это низкоуровневая реализация.

Availability: Unix, Windows.

class os.terminal_size

Подкласс tuple, содержащий (columns, lines) размера окна терминала.

columns

Ширина окна терминала в символах.

lines

Высота окна терминала в символах.

Наследование файловых дескрипторов

Добавлено в версии 3.4.

Файловый дескриптор имеет флаг «наследуемый», который указывает, может ли файловый дескриптор быть унаследован дочерними процессами. Начиная с версии Python 3.4, файловые дескрипторы, созданные с помощью Python, по умолчанию не наследуются.

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

В Windows ненаследуемые дескрипторы и файловые дескрипторы закрыты в дочерних процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout и stderr), которые всегда наследуются. При использовании функций spawn* наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы. При использовании модуля subprocess все файловые дескрипторы, кроме стандартных потоков, закрываются, а наследуемые дескрипторы наследуются только в том случае, если параметр close_fds равен False.

На платформах WebAssembly wasm32-emscripten и wasm32-wasi файловый дескриптор не может быть изменен.

os.get_inheritable(fd, /)

Получите флаг «наследуемый» для указанного файлового дескриптора (логическое значение).

os.set_inheritable(fd, inheritable, /)

Установите флаг «наследуемый» для указанного файлового дескриптора.

os.get_handle_inheritable(handle, /)

Получите флаг «наследуемый» для указанного дескриптора (логическое значение).

Availability: Окна.

os.set_handle_inheritable(handle, inheritable, /)

Установите флаг «наследуемый» для указанного дескриптора.

Availability: Окна.

Файлы и каталоги

На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из перечисленных функций:

  • указание файлового дескриптора: Обычно аргумент path, предоставляемый функциям в модуле os, должен быть строкой, указывающей путь к файлу. Однако некоторые функции теперь в качестве альтернативы принимают открытый файловый дескриптор в качестве аргумента path. Затем функция будет работать с файлом, на который ссылается дескриптор. (Для систем POSIX Python будет вызывать вариант функции с префиксом f (например, вызывать fchdir вместо chdir).)

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

    Если функция также поддерживает аргументы dir_fd или follow_symlinks, то указание одного из них при указании path в качестве файлового дескриптора является ошибкой.

  • пути относительно дескрипторов каталогов: Если dir_fd не является None, это должен быть файловый дескриптор, ссылающийся на каталог, и путь, с которым нужно работать, должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь является абсолютным, dir_fd игнорируется. (Для систем POSIX Python будет вызывать вариант функции с суффиксом at и, возможно, с префиксом f (например, вызывать faccessat вместо access).

    Вы можете проверить, поддерживается ли dir_fd для определенной функции на вашей платформе, используя os.supports_dir_fd. Если она недоступна, при ее использовании будет отображаться NotImplementedError.

os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)

Используйте реальный uid/gid для проверки доступа к path. Обратите внимание, что в большинстве операций будет использоваться эффективный uid/gid, поэтому эту процедуру можно использовать в среде suid/sgid, чтобы проверить, имеет ли вызывающий пользователь указанный доступ к path. mode должен быть F_OK для проверки наличия path, или он может быть включающим ИЛИ одного или нескольких из R_OK, W_OK, и X_OK для проверки разрешений. Верните True, если доступ разрешен, False, если нет. Дополнительную информацию смотрите на странице руководства по Unix access(2).

Эта функция может поддерживать указание paths relative to directory descriptors и not following symlinks.

If effective_ids is True, access() будет выполнять проверку доступа, используя эффективный uid/gid вместо реального uid/gid. effective_ids может не поддерживаться на вашей платформе; вы можете проверить, доступен он или нет, используя os.supports_effective_ids. Если он недоступен, при его использовании появится NotImplementedError.

Примечание

Использование access() для проверки того, авторизован ли пользователь, например, на открытие файла, прежде чем фактически сделать это с помощью open(), создает брешь в системе безопасности, поскольку пользователь может воспользоваться коротким интервалом времени между проверкой и открытием файла для манипулирования им. Предпочтительнее использовать EAFP техники. Например:

if os.access("myfile", os.R_OK):
    with open("myfile") as fp:
        return fp.read()
return "some default data"

лучше записать в виде:

try:
    fp = open("myfile")
except PermissionError:
    return "some default data"
else:
    with fp:
        return fp.read()

Примечание

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

Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.

Изменено в версии 3.6: Принимает значение path-like object.

os.F_OK
os.R_OK
os.W_OK
os.X_OK

Значения, передаваемые в качестве параметра mode значения access() для проверки существования, читаемости, записи и исполняемости path, соответственно.

os.chdir(path)

Измените текущий рабочий каталог на path.

Эта функция может поддерживать specifying a file descriptor. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.

Эта функция может создавать OSError и подклассы, такие как FileNotFoundError, PermissionError, и NotADirectoryError.

Создает auditing event os.chdir с аргументом path.

Изменено в версии 3.3: Добавлена поддержка указания path в качестве файлового дескриптора на некоторых платформах.

Изменено в версии 3.6: Принимает значение path-like object.

os.chflags(path, flags, *, follow_symlinks=True)

Установите для флагов path числовые значения flags. флаги могут принимать комбинацию (побитовое ИЛИ) из следующих значений (как определено в модуле stat):

Эта функция может поддерживать not following symlinks.

Создает auditing event os.chflags с аргументами path, flags.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.3: Добавлен параметр follow_symlinks.

Изменено в версии 3.6: Принимает значение path-like object.

os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

Измените режим path на числовой mode. mode может принимать одно из следующих значений (как определено в модуле stat) или их побитовую комбинацию.:

Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.

Примечание

Хотя Windows поддерживает chmod(), вы можете установить только флаг «только для чтения» для файла (с помощью констант stat.S_IWRITE и stat.S_IREAD или соответствующего целого значения). Все остальные биты игнорируются.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

Создает auditing event os.chmod с аргументами path, mode, dir_fd.

Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также аргументов dir_fd и follow_symlinks.

Изменено в версии 3.6: Принимает значение path-like object.

os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)

Измените идентификатор владельца и группы в path на числовой uid и gid. Чтобы оставить один из идентификаторов неизменным, установите для него значение -1.

Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.

Смотрите shutil.chown() для функции более высокого уровня, которая принимает имена в дополнение к числовым идентификаторам.

Создает auditing event os.chown с аргументами path, uid, gid, dir_fd.

Availability: Unix.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также аргументов dir_fd и follow_symlinks.

Изменено в версии 3.6: Поддерживает значение path-like object.

os.chroot(path)

Измените корневой каталог текущего процесса на path.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.6: Принимает значение path-like object.

os.fchdir(fd)

Измените текущий рабочий каталог на каталог, представленный файловым дескриптором fd. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл. Начиная с версии Python 3.3, это эквивалентно os.chdir(fd).

Создает auditing event os.chdir с аргументом path.

Availability: Unix.

os.getcwd()

Возвращает строку, представляющую текущий рабочий каталог.

os.getcwdb()

Возвращает байтовую строку, представляющую текущий рабочий каталог.

Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 в Windows, а не кодовую страницу ANSI: смотрите PEP 529 для объяснения. Функция больше не является устаревшей в Windows.

os.lchflags(path, flags)

Установите для параметра path числовые флаги, например, chflags(), но не переходите по символьным ссылкам. Начиная с версии Python 3.3, это эквивалентно os.chflags(path, flags, follow_symlinks=False).

Создает auditing event os.chflags с аргументами path, flags.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.6: Принимает значение path-like object.

os.lchmod(path, mode)

Измените режим path на числовой mode. Если путь является символической ссылкой, это влияет на символическую ссылку, а не на цель. Возможные значения mode смотрите в документации для chmod(). Начиная с Python 3.3, это эквивалентно os.chmod(path, mode, follow_symlinks=False).

lchmod() не является частью POSIX, но в реализациях Unix он может быть, если поддерживается изменение режима символических ссылок.

Создает auditing event os.chmod с аргументами path, mode, dir_fd.

Availability: Unix, не Linux, FreeBSD >= 1.3, NetBSD >= 1.3, не OpenBSD

Изменено в версии 3.6: Принимает значение path-like object.

os.lchown(path, uid, gid)

Измените идентификатор владельца и группы path на числовой uid и gid. Эта функция не будет использовать символьные ссылки. Начиная с версии Python 3.3, это эквивалентно os.chown(path, uid, gid, follow_symlinks=False).

Создает auditing event os.chown с аргументами path, uid, gid, dir_fd.

Availability: Unix.

Изменено в версии 3.6: Принимает значение path-like object.

Создайте жесткую ссылку, указывающую на src с именем dst.

Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для указания paths relative to directory descriptors и not following symlinks.

Создает auditing event os.link с аргументами src, dst, src_dir_fd, dst_dir_fd.

Availability: Unix, Windows, а не Emscripten.

Изменено в версии 3.2: Добавлена поддержка Windows.

Изменено в версии 3.3: Добавлены параметры src_dir_fd, dst_dir_fd и follow_symlinks.

Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.

os.listdir(path='.')

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

путь может быть path-like object. Если path имеет тип bytes (прямо или косвенно через интерфейс PathLike), возвращаемые имена файлов также будут иметь тип bytes; во всех остальных случаях они будут иметь тип str.

Эта функция также может поддерживать specifying a file descriptor; файловый дескриптор должен ссылаться на каталог.

Создает auditing event os.listdir с аргументом path.

Примечание

Чтобы закодировать str имена файлов в bytes, используйте fsencode().

См.также

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

Изменено в версии 3.2: Параметр path стал необязательным.

Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла.

Изменено в версии 3.6: Принимает значение path-like object.

os.lstat(path, *, dir_fd=None)

Выполните эквивалент системного вызова lstat() по заданному пути. Аналогично stat(), но не следует по символьным ссылкам. Верните объект stat_result.

На платформах, которые не поддерживают символьные ссылки, это псевдоним для stat().

Начиная с Python 3.3, это эквивалентно os.stat(path, dir_fd=dir_fd, follow_symlinks=False).

Эта функция также может поддерживать paths relative to directory descriptors.

См.также

Функция stat().

Изменено в версии 3.2: Добавлена поддержка символьных ссылок для Windows 6.0 (Vista).

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.8: В Windows теперь открываются точки повторной обработки, которые представляют другой путь (заменители имен), включая символьные ссылки и переходы между каталогами. Другие типы точек повторной обработки разрешаются операционной системой, как и для stat().

os.mkdir(path, mode=0o777, *, dir_fd=None)

Создайте каталог с именем path и цифровым режимом mode.

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

В некоторых системах параметр mode игнорируется. При его использовании текущее значение umask сначала маскируется. Если заданы биты, отличные от последних 9 (т.е. последние 3 цифры восьмеричного представления режима *), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать chmod().

В Windows mode из 0o700 специально используется для применения контроля доступа к новому каталогу таким образом, чтобы доступ был только у текущего пользователя и администраторов. Другие значения mode игнорируются.

Эта функция также может поддерживать paths relative to directory descriptors.

Также возможно создавать временные каталоги; смотрите функцию tempfile модуля tempfile.mkdtemp().

Создает auditing event os.mkdir с аргументами path, mode, dir_fd.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.11.10: Windows теперь поддерживает режим, равный 0o700.

os.makedirs(name, mode=0o777, exist_ok=False)

Рекурсивная функция создания каталогов. Как mkdir(), но при этом все каталоги промежуточного уровня должны содержать конечный каталог.

Параметр mode передается в mkdir() для создания конечного каталога; как он интерпретируется, смотрите в the mkdir() description. Чтобы задать разряды прав доступа к файлам для любых вновь созданных родительских каталогов, вы можете установить umask перед вызовом makedirs(). Разряды прав доступа к файлам для существующих родительских каталогов не изменяются.

Если значение exist_ok равно False (по умолчанию), то создается значение FileExistsError, если целевой каталог уже существует.

Примечание

makedirs() приведет к путанице, если элементы пути для создания включают pardir (например, «..» в системах UNIX).

Эта функция корректно обрабатывает UNC-пути.

Создает auditing event os.mkdir с аргументами path, mode, dir_fd.

Изменено в версии 3.2: Добавлен параметр exist_ok.

Изменено в версии 3.4.1: До Python 3.4.1, если exist_ok был True и каталог существовал, makedirs() все равно выдавал бы ошибку, если mode не соответствовал режиму существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. Смотрите bpo-21082.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.7: Аргумент mode больше не влияет на разряды разрешений доступа к файлам во вновь созданных каталогах промежуточного уровня.

os.mkfifo(path, mode=0o666, *, dir_fd=None)

Создайте FIFO (именованный канал) с именем path и числовым режимом mode. Текущее значение umask сначала маскируется из режима.

Эта функция также может поддерживать paths relative to directory descriptors.

Файлообменники - это каналы, к которым можно обращаться как к обычным файлам. Файлообменники существуют до тех пор, пока они не будут удалены (например, с помощью os.unlink()). Как правило, FIFO используются для встречи процессов типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, что mkfifo() не открывает FIFO - он просто создает точку встречи.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.mknod(path, mode=0o600, device=0, *, dir_fd=None)

Создайте узел файловой системы (файл, специальный файл устройства или именованный канал) с именем path. mode определяет как разрешения на использование, так и тип создаваемого узла, которые объединяются (побитовое ИЛИ) с одним из stat.S_IFREG, stat.S_IFCHR, stat.S_IFBLK, и stat.S_IFIFO (эти константы доступны в stat). Для stat.S_IFCHR и stat.S_IFBLK device определяет вновь созданный специальный файл устройства (возможно, с использованием os.makedev()), в противном случае он игнорируется.

Эта функция также может поддерживать paths relative to directory descriptors.

Availability: Unix, не Emscripten, не БЫЛ I.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.major(device, /)

Извлеките основной номер устройства из исходного номера устройства (обычно это поле st_dev или st_rdev из stat).

os.minor(device, /)

Извлеките младший номер устройства из исходного номера устройства (обычно это поле st_dev или st_rdev из stat).

os.makedev(major, minor, /)

Составьте исходный номер устройства из основного и второстепенного номеров устройств.

os.pathconf(path, name)

Возвращает информацию о конфигурации системы, относящуюся к именованному файлу. имя указывает значение конфигурации для извлечения; это может быть строка, представляющая собой имя определенного системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, указаны в словаре pathconf_names. Для переменных конфигурации, не включенных в это сопоставление, также допускается передача целого числа вместо name.

Если name является строкой и не известен, то выводится значение ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно включено в pathconf_names, для номера ошибки генерируется OSError с errno.EINVAL.

Эта функция может поддерживать specifying a file descriptor.

Availability: Unix.

Изменено в версии 3.6: Принимает значение path-like object.

os.pathconf_names

Словарь сопоставляет имена, принятые в pathconf() и fpathconf(), с целыми значениями, определенными для этих имен операционной системой хоста. Это может использоваться для определения набора имен, известных системе.

Availability: Unix.

Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результатом может быть либо абсолютный, либо относительный путь; если он относительный, его можно преобразовать в абсолютный путь, используя os.path.join(os.path.dirname(path), result).

Если path является строковым объектом (прямо или косвенно через интерфейс PathLike), результатом также будет строковый объект, и вызов может вызвать ошибку UnicodeDecodeError. Если path является объектом bytes (прямым или косвенным образом), результатом будет объект bytes.

Эта функция также может поддерживать paths relative to directory descriptors.

При попытке разрешить путь, который может содержать ссылки, используйте realpath() для правильной обработки рекурсии и различий в платформах.

Availability: Unix, Windows.

Изменено в версии 3.2: Добавлена поддержка символьных ссылок для Windows 6.0 (Vista).

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object в Unix.

Изменено в версии 3.8: Принимает path-like object и объект bytes в Windows.

Добавлена поддержка переходов между каталогами и изменен способ возврата пути подстановки (который обычно включает префикс \\?\) вместо необязательного поля «имя для печати», которое возвращалось ранее.

os.remove(path, *, dir_fd=None)

Удалите (delete) файл path. Если path является каталогом, ставится OSError. Используйте rmdir() для удаления каталогов. Если файл не существует, ставится FileNotFoundError.

Эта функция может поддерживать paths relative to directory descriptors.

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

Эта функция семантически идентична unlink().

Создает auditing event os.remove с аргументами path, dir_fd.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.removedirs(name)

Рекурсивно удаляйте каталоги. Работает как rmdir(), за исключением того, что, если конечный каталог успешно удален, removedirs() пытается последовательно удалить каждый родительский каталог, указанный в path, пока не возникнет ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст). Например, os.removedirs('foo/bar/baz') сначала удалит каталог 'foo/bar/baz', а затем удалит 'foo/bar' и 'foo', если они пусты. Вызывает OSError, если конечный каталог не удалось успешно удалить.

Создает auditing event os.remove с аргументами path, dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Переименуйте файл или каталог src в dst. Если dst существует, в ряде случаев операция завершится ошибкой с подклассом OSError:

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

В Unix, если src - это файл, а dst - каталог, или наоборот, будет поднят IsADirectoryError или NotADirectoryError соответственно. Если оба каталога являются каталогами и значение dst пустое, значение dst будет автоматически заменено. Если dst является непустым каталогом, генерируется значение OSError. Если оба файла являются файлами, dst будет автоматически заменен, если у пользователя есть разрешение. В некоторых версиях Unix операция может завершиться ошибкой, если src и dst находятся в разных файловых системах. В случае успеха переименование будет элементарной операцией (это требование POSIX).

Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для указания paths relative to directory descriptors.

Если вы хотите кроссплатформенную перезапись целевого файла, используйте replace().

Создает auditing event os.rename с аргументами src, dst, src_dir_fd, dst_dir_fd.

Изменено в версии 3.3: Добавлены параметры src_dir_fd и dst_dir_fd.

Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.

os.renames(old, new)

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

Примечание

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

Создает auditing event os.rename с аргументами src, dst, src_dir_fd, dst_dir_fd.

Изменено в версии 3.6: Принимает значение path-like object для старого и нового.

os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)

Переименуйте файл или каталог src в dst. Если dst является непустым каталогом, будет поднят OSError. Если dst существует и является файлом, он будет автоматически заменен, если у пользователя есть разрешение. Операция может завершиться ошибкой, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).

Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для указания paths relative to directory descriptors.

Создает auditing event os.rename с аргументами src, dst, src_dir_fd, dst_dir_fd.

Добавлено в версии 3.3.

Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.

os.rmdir(path, *, dir_fd=None)

Удалите (delete) каталог path. Если каталог не существует или не является пустым, то ставится FileNotFoundError или OSError соответственно. Для удаления целых деревьев каталогов можно использовать shutil.rmtree().

Эта функция может поддерживать paths relative to directory descriptors.

Создает auditing event os.rmdir с аргументами path, dir_fd.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.scandir(path='.')

Возвращает итератор объектов os.DirEntry, соответствующих записям в каталоге, указанным в path. Записи выводятся в произвольном порядке, а специальные записи '.' и '..' не включаются. Если файл удаляется из каталога или добавляется в него после создания итератора, не указано, будет ли включена запись для этого файла.

Использование scandir() вместо listdir() может значительно повысить производительность кода, которому также требуется информация о типе файла или его атрибутах, поскольку объекты os.DirEntry предоставляют эту информацию, если операционная система предоставляет ее при сканировании каталога. Все методы os.DirEntry могут выполнять системный вызов, но is_dir() и is_file() обычно требуют системного вызова только для символьных ссылок; os.DirEntry.stat() всегда требует системного вызова в Unix, но требуется только для символические ссылки в Windows.

путь может быть path-like object. Если path имеет тип bytes (прямо или косвенно через интерфейс PathLike), то тип атрибутов name и path каждого os.DirEntry будет быть bytes; во всех остальных случаях они будут иметь тип str.

Эта функция также может поддерживать specifying a file descriptor; файловый дескриптор должен ссылаться на каталог.

Создает auditing event os.scandir с аргументом path.

Итератор scandir() поддерживает протокол context manager и использует следующий метод:

scandir.close()

Закройте итератор и освободите полученные ресурсы.

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

Добавлено в версии 3.6.

В следующем примере показано простое использование scandir() для отображения всех файлов (за исключением каталогов) в указанном пути, которые не начинаются с '.'. Вызов entry.is_file() обычно не вызывает дополнительного системного вызова:

with os.scandir(path) as it:
    for entry in it:
        if not entry.name.startswith('.') and entry.is_file():
            print(entry.name)

Примечание

В системах на базе Unix scandir() использует системные функции opendir() и readdir(). В Windows он использует функции Win32 FindFirstFileW и FindNextFileW.

Добавлено в версии 3.5.

Изменено в версии 3.6: Добавлена поддержка протокола context manager и метода close(). Если итератор scandir() не исчерпан и не закрыт явно, в его деструкторе будет запущен ResourceWarning.

Функция принимает значение path-like object.

Изменено в версии 3.7: Добавлена поддержка file descriptors в Unix.

class os.DirEntry

Объект, получаемый с помощью scandir(), предоставляет путь к файлу и другие атрибуты файла для записи в каталоге.

scandir() предоставит как можно больше этой информации без выполнения дополнительных системных вызовов. При выполнении системного вызова stat() или lstat() объект os.DirEntry кэширует результат.

os.DirEntry экземпляры не предназначены для хранения в долговечных структурах данных; если вы знаете, что метаданные файла изменились или прошло много времени с момента вызова scandir(), вызовите os.stat(entry.path) для получения актуальной информации.информация о дате.

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

Для непосредственного использования в качестве path-like object, os.DirEntry реализует интерфейс PathLike.

Атрибуты и методы экземпляра os.DirEntry являются следующими:

name

Базовое имя файла записи, относящееся к аргументу scandir() path.

Атрибутом name будет bytes, если аргумент scandir() path имеет тип bytes и str в противном случае. Используйте fsdecode() для декодирования байтовых имен файлов.

path

Полное имя пути к записи: эквивалентно os.path.join(scandir_path, entry.name), где scandir_path - это аргумент scandir() path. Путь является абсолютным только в том случае, если аргумент scandir() path был абсолютным. Если аргументом scandir() path был file descriptor, то атрибут path будет таким же, как и атрибут name.

Атрибутом path будет bytes, если аргумент scandir() path имеет тип bytes и str в противном случае. Используйте fsdecode() для декодирования байтовых имен файлов.

inode()

Возвращает индексный номер записи.

Результат кэшируется в объекте os.DirEntry. Используйте os.stat(entry.path, follow_symlinks=False).st_ino для получения актуальной информации.

При первом, некэшированном вызове, системный вызов требуется в Windows, но не в Unix.

is_dir(*, follow_symlinks=True)

Возвращает True, если эта запись является каталогом или символьной ссылкой, указывающей на каталог; возвращает False, если запись является файлом любого другого типа или указывает на него, или если он больше не существует.

Если значение follow_symlinks равно False, верните True только в том случае, если эта запись является каталогом (без перехода по символическим ссылкам); верните False, если запись представляет собой файл любого другого типа или если он больше не существует.

Результат кэшируется в объекте os.DirEntry с отдельным кэшем для follow_symlinks True и False. Позвоните по os.stat() вместе с stat.S_ISDIR(), чтобы получить актуальную информацию.

При первом, некэшированном вызове, системный вызов в большинстве случаев не требуется. В частности, для несимволических ссылок ни Windows, ни Unix не требуется системный вызов, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают dirent.d_type == DT_UNKNOWN. Если запись является символической ссылкой, то для перехода по символической ссылке потребуется системный вызов, если только значение follow_symlinks не равно False.

Этот метод может вызвать OSError, например PermissionError, но FileNotFoundError перехватывается и не вызывается.

is_file(*, follow_symlinks=True)

Возвращает True, если эта запись является файлом или символьной ссылкой, указывающей на файл; возвращает False, если запись является каталогом или указывает на другую запись, не относящуюся к файлу, или если она больше не существует.

Если значение follow_symlinks равно False, верните True только в том случае, если эта запись является файлом (без следующих символических ссылок); верните False, если запись является каталогом или другой записью, не относящейся к файлу, или если это не так. больше не существую.

Результат кэшируется в объекте os.DirEntry. Кэширование, системные вызовы и возникающие исключения выполняются в соответствии с is_dir().

Возвращает True, если эта запись является символьной ссылкой (даже если она не работает); возвращает False, если запись указывает на каталог или какой-либо файл, или если он больше не существует.

Результат кэшируется в объекте os.DirEntry. Вызовите os.path.islink() для получения актуальной информации.

При первом, некэшированном вызове, системный вызов в большинстве случаев не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают dirent.d_type == DT_UNKNOWN.

Этот метод может вызвать OSError, например PermissionError, но FileNotFoundError перехватывается и не вызывается.

stat(*, follow_symlinks=True)

Возвращает объект stat_result для этой записи. По умолчанию этот метод использует символьные ссылки; чтобы указать символьную ссылку, добавьте аргумент follow_symlinks=False.

В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова только в том случае, если значение follow_symlinks равно True и запись является точкой повторного анализа (например, символической ссылкой или соединением каталогов).

В Windows атрибуты st_ino, st_dev и st_nlink для параметра stat_result всегда равны нулю. Для получения этих атрибутов вызовите os.stat().

Результат кэшируется в объекте os.DirEntry с отдельным кэшем для follow_symlinks True и False. Позвоните по номеру os.stat(), чтобы получить актуальную информацию.

Обратите внимание, что существует хорошее соответствие между несколькими атрибутами и методами os.DirEntry и pathlib.Path. В частности, атрибут name имеет то же значение, что и методы is_dir(), is_file(), is_symlink() и stat().

Добавлено в версии 3.5.

Изменено в версии 3.6: Добавлена поддержка интерфейса PathLike. Добавлена поддержка путей bytes в Windows.

os.stat(path, *, dir_fd=None, follow_symlinks=True)

Получите статус файла или файлового дескриптора. Выполните эквивалент системного вызова a stat() по заданному пути. путь может быть указан в виде строки или байтов - прямо или косвенно через интерфейс PathLike - или в виде открытого файлового дескриптора. Возвращает объект stat_result.

Эта функция обычно следует за символическими ссылками; чтобы указать символическую ссылку, добавьте аргумент follow_symlinks=False или используйте lstat().

Эта функция может поддерживать specifying a file descriptor и not following symlinks.

В Windows передача follow_symlinks=False отключит отслеживание всех точек повторной обработки, заменяющих имена, включая символические ссылки и переходы между каталогами. Другие типы точек повторной обработки, которые не похожи на ссылки или которые операционная система не может отслеживать, будут открыты напрямую. При переходе по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая препятствовала полному обходу. Чтобы получить результаты состояния для конечного пути в этом случае, используйте функцию os.path.realpath() для определения имени пути, насколько это возможно, и вызовите lstat() для получения результата. Это не относится к висячим символическим ссылкам или точкам соединения, которые вызывают обычные исключения.

Пример:

>>> import os
>>> statinfo = os.stat('somefile.txt')
>>> statinfo
os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,
st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,
st_mtime=1297230027, st_ctime=1297230027)
>>> statinfo.st_size
264

См.также

функции fstat() и lstat().

Изменено в версии 3.3: Добавлены параметры dir_fd и follow_symlinks, указывающие файловый дескриптор вместо пути.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.8: В Windows теперь отслеживаются все точки повторной обработки, которые могут быть разрешены операционной системой, а передача follow_symlinks=False отключает отслеживание всех точек повторной обработки, заменяющих имена. Если операционная система достигает точки повторного анализа, которую она не может выполнить, stat теперь возвращает информацию для исходного пути, как если бы был указан follow_symlinks=False, вместо того, чтобы выдавать ошибку.

class os.stat_result

Объект, атрибуты которого примерно соответствуют элементам структуры stat. Он используется для получения результата os.stat(), os.fstat() и os.lstat().

Атрибуты:

st_mode

Режим файла: тип файла и биты режима файла (разрешения).

st_ino

Зависит от платформы, но, если значение не равно нулю, однозначно идентифицирует файл при заданном значении st_dev. Типично:

  • индексный номер в Unix,

  • значение file index в Windows

st_dev

Идентификатор устройства, на котором находится этот файл.

Количество жестких ссылок.

st_uid

Пользовательский идентификатор владельца файла.

st_gid

Групповой идентификатор владельца файла.

st_size

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

Временные метки:

st_atime

Время последнего обращения, выраженное в секундах.

st_mtime

Время последнего изменения содержимого, выраженное в секундах.

st_ctime

Зависит от платформы:

  • время последнего изменения метаданных в Unix,

  • время создания в Windows, выраженное в секундах.

st_atime_ns

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

Добавлено в версии 3.3.

st_mtime_ns

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

Добавлено в версии 3.3.

st_ctime_ns

Зависит от платформы:

  • время последнего изменения метаданных в Unix,

  • время создания в Windows, выраженное в наносекундах в виде целого числа.

Добавлено в версии 3.3.

Примечание

Точное значение и разрешение атрибутов st_atime, st_mtime, и st_ctime зависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, разрешение st_mtime составляет 2 секунды, а st_atime - всего 1 день. Подробности смотрите в документации к вашей операционной системе.

Аналогично, хотя значения st_atime_ns, st_mtime_ns, и st_ctime_ns всегда выражаются в наносекундах, многие системы не обеспечивают наносекундной точности. В системах, которые обеспечивают наносекундную точность, объект с плавающей запятой, используемый для хранения st_atime, st_mtime, и st_ctime, не может сохранить все данные и, как таковой, будет немного неточным. Если вам нужны точные временные метки, вы всегда должны использовать st_atime_ns, st_mtime_ns, и st_ctime_ns.

В некоторых системах Unix (таких как Linux) также могут быть доступны следующие атрибуты:

st_blocks

Количество 512-байтовых блоков, выделенных для файла. Это значение может быть меньше st_size/512, если в файле есть пробелы.

st_blksize

«Предпочтительный» размер блока для эффективного ввода-вывода в файловой системе. Запись в файл небольшими порциями может привести к неэффективному чтению, изменению и перезаписи.

st_rdev

Тип устройства, если это устройство с индексным узлом.

st_flags

Пользовательские флаги для файла.

В других системах Unix (таких как FreeBSD) могут быть доступны следующие атрибуты (но они могут быть заполнены только в том случае, если root попытается их использовать):

st_gen

Номер генерации файла.

st_birthtime

Время создания файла.

В Solaris и производных от него системах также могут быть доступны следующие атрибуты:

st_fstype

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

В системах macOS также могут быть доступны следующие атрибуты:

st_rsize

Реальный размер файла.

st_creator

Создатель файла.

st_type

Тип файла.

В системах Windows также доступны следующие атрибуты:

st_file_attributes

Атрибуты файла Windows: dwFileAttributes элемент структуры BY_HANDLE_FILE_INFORMATION, возвращаемый с помощью GetFileInformationByHandle(). Смотрите константы FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE> в модуле stat.

Добавлено в версии 3.5.

st_reparse_tag

Если для параметра st_file_attributes задано значение FILE_ATTRIBUTE_REPARSE_POINT, это поле содержит тег, определяющий тип точки повторного анализа. Смотрите константы IO_REPARSE_TAG_* в модуле stat.

Стандартный модуль stat определяет функции и константы, которые полезны для извлечения информации из структуры stat. (В Windows некоторые элементы заполнены фиктивными значениями.)

Для обеспечения обратной совместимости экземпляр stat_result также доступен в виде кортежа, состоящего как минимум из 10 целых чисел, содержащих наиболее важные (и переносимые) элементы структуры stat, в порядке st_mode, st_ino, st_dev, st_nlink, st_uid, st_gid, st_size, st_atime, st_mtime, st_ctime. В некоторых реализациях в конце может быть добавлено больше элементов. Для совместимости со старыми версиями Python обращение к stat_result в качестве кортежа всегда возвращает целые числа.

Изменено в версии 3.5: Windows теперь возвращает файловый индекс как st_ino, когда он доступен.

Изменено в версии 3.7: Добавлен элемент st_fstype в Solaris/производные.

Изменено в версии 3.8: Добавлен элемент st_reparse_tag в Windows.

Изменено в версии 3.8: В Windows элемент st_mode теперь идентифицирует специальные файлы как S_IFCHR, S_IFIFO или S_IFBLK соответственно.

os.statvfs(path)

Выполните системный вызов a statvfs() по заданному пути. Возвращаемое значение представляет собой объект, атрибуты которого описывают файловую систему по заданному пути и соответствуют элементам структуры statvfs, а именно: f_bsize, f_frsize, f_blocks, f_bfree, f_bavail, f_files, f_ffree, f_favail, f_flag, f_namemax, f_fsid.

Для битовых флагов атрибута f_flag определены две константы уровня модуля: если установлено значение ST_RDONLY, файловая система подключается только для чтения, а если установлено значение ST_NOSUID, семантика битов setuid/setgid изменяется. отключены или не поддерживаются.

Для систем, основанных на GNU/glibc, определены дополнительные константы уровня модуля. Это ST_NODEV (запрещает доступ к специальным файлам устройства), ST_NOEXEC (запрещает выполнение программы), ST_SYNCHRONOUS (записи синхронизируются сразу), ST_MANDLOCK (разрешает принудительную блокировку FS), ST_WRITE (запись в файл/каталог/символическую ссылку), ST_APPEND (файл только для добавления), ST_IMMUTABLE ( неизменяемый файл), ST_NOATIME ( не обновлять время доступа), ST_NODIRATIME (не обновлять время доступа к каталогу), ST_RELATIME (обновлять atime относительно mtime/ctime).

Эта функция может поддерживать specifying a file descriptor.

Availability: Unix.

Изменено в версии 3.2: Были добавлены константы ST_RDONLY и ST_NOSUID.

Изменено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла.

Изменено в версии 3.4: Были добавлены константы ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS, ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME, ST_NODIRATIME, и ST_RELATIME.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.7: Добавлен атрибут f_fsid.

os.supports_dir_fd

Объект set, указывающий, какие функции в модуле os принимают открытый файловый дескриптор в качестве своего параметра dir_fd. Разные платформы предоставляют разные функции, и базовая функциональность, которую Python использует для реализации параметра dir_fd, доступна не на всех платформах, поддерживаемых Python. Для обеспечения согласованности функции, которые могут поддерживать dir_fd, всегда позволяют указывать параметр, но будут генерировать исключение, если функция используется, когда она недоступна локально. (Указание None для dir_fd всегда поддерживается на всех платформах.)

Чтобы проверить, принимает ли конкретная функция открытый файловый дескриптор в качестве своего параметра dir_fd, используйте оператор in в supports_dir_fd. В качестве примера, это выражение принимает значение True, если os.stat() принимает открытые файловые дескрипторы для dir_fd на локальной платформе:

os.stat in os.supports_dir_fd

В настоящее время параметры dir_fd работают только на платформах Unix; ни один из них не работает в Windows.

Добавлено в версии 3.3.

os.supports_effective_ids

Объект set, указывающий, разрешает ли os.access() указывать True для его параметра effective_ids на локальной платформе. (Указание False для effective_ids всегда поддерживается на всех платформах.) Если локальная платформа поддерживает это, коллекция будет содержать os.access(); в противном случае она будет пустой.

Значение этого выражения равно True, если os.access() поддерживает effective_ids=True на локальной платформе:

os.access in os.supports_effective_ids

В настоящее время effective_ids поддерживается только на платформах Unix; в Windows он не работает.

Добавлено в версии 3.3.

os.supports_fd

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

Чтобы определить, разрешает ли конкретная функция указывать дескриптор открытого файла для своего параметра path, используйте оператор in в supports_fd. В качестве примера, это выражение принимает значение True, если os.chdir() принимает дескрипторы открытых файлов для path на вашей локальной платформе:

os.chdir in os.supports_fd

Добавлено в версии 3.3.

Объект set, указывающий, какие функции в модуле os принимают False в качестве параметра follow_symlinks на локальной платформе. Разные платформы предоставляют разные функции, и базовая функциональность, которую Python использует для реализации follow_symlinks, доступна не на всех платформах, поддерживаемых Python. Для обеспечения согласованности функции, которые могут поддерживать follow_symlinks, всегда позволяют указывать параметр, но будут генерировать исключение, если функция используется, когда она недоступна локально. (Указание True для follow_symlinks всегда поддерживается на всех платформах.)

Чтобы проверить, принимает ли конкретная функция False в качестве параметра follow_symlinks, используйте оператор in для supports_follow_symlinks. В качестве примера, это выражение принимает значение True, если вы можете указать follow_symlinks=False при вызове os.stat() на локальной платформе:

os.stat in os.supports_follow_symlinks

Добавлено в версии 3.3.

Создайте символическую ссылку, указывающую на src с именем dst.

В Windows символическая ссылка представляет либо файл, либо каталог и не преобразуется в целевой объект динамически. Если целевой объект присутствует, тип символической ссылки будет создан соответствующим образом. В противном случае символическая ссылка будет создана как каталог, если значение target_is_directory равно True, или как символическая ссылка на файл (по умолчанию). На платформах, отличных от Windows, значение target_is_directory игнорируется.

Эта функция может поддерживать paths relative to directory descriptors.

Примечание

В более новых версиях Windows 10 непривилегированные учетные записи могут создавать символические ссылки, если включен режим разработчика. Если режим разработчика недоступен/включен, требуется привилегия SeCreateSymbolicLinkPrivilege или процесс должен запускаться от имени администратора.

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

Создает auditing event os.symlink с аргументами src, dst, dir_fd.

Availability: Unix, Windows.

Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.

Изменено в версии 3.2: Добавлена поддержка символьных ссылок для Windows 6.0 (Vista).

Изменено в версии 3.3: Добавлен параметр dir_fd, и теперь он разрешает target_is_directory на платформах, отличных от Windows.

Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.

Изменено в версии 3.8: Добавлена поддержка неизменяемых символических ссылок в Windows в режиме разработчика.

os.sync()

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

Availability: Unix.

Добавлено в версии 3.3.

os.truncate(path, length)

Обрежьте файл, соответствующий path, так, чтобы его размер был не более length байт.

Эта функция может поддерживать specifying a file descriptor.

Создает auditing event os.truncate с аргументами path, length.

Availability: Unix, Windows.

Добавлено в версии 3.3.

Изменено в версии 3.5: Добавлена поддержка Windows

Изменено в версии 3.6: Принимает значение path-like object.

Удалите (delete) файл path. Эта функция семантически идентична remove(); имя unlink является ее традиционным именем в Unix. Пожалуйста, обратитесь к документации для remove() для получения дополнительной информации.

Создает auditing event os.remove с аргументами path, dir_fd.

Изменено в версии 3.3: Добавлен параметр dir_fd.

Изменено в версии 3.6: Принимает значение path-like object.

os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)

Установите время доступа к файлу и его изменения, указанное в path.

utime() принимает два необязательных параметра, times и ns. Они определяют время, установленное в path, и используются следующим образом:

  • Если указано значение ns, оно должно состоять из 2 кортежей вида (atime_ns, mtime_ns), где каждый элемент представляет собой число int, выражающее наносекунды.

  • Если times не равно None, то это должен быть 2-й кортеж вида (atime, mtime), где каждый элемент представляет собой число int или число с плавающей точкой, выражающее секунды.

  • Если значение times равно None, а значение ns не указано, это эквивалентно указанию ns=(atime_ns, mtime_ns), где оба значения являются текущим временем.

Указание кортежей как для times, так и для ns является ошибкой.

Обратите внимание, что точное время, указанное вами здесь, может не быть возвращено при последующем вызове stat(), в зависимости от разрешения, с которым ваша операционная система регистрирует время доступа и изменения; см. stat(). Лучший способ сохранить точное время - использовать поля st_atime_ns и st_mtime_ns из объекта os.stat() result с параметром ns, равным utime().

Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.

Создает auditing event os.utime с аргументами path, times, ns, dir_fd.

Изменено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также параметров dir_fd, follow_symlinks и ns.

Изменено в версии 3.6: Принимает значение path-like object.

os.walk(top, topdown=True, onerror=None, followlinks=False)

Сгенерируйте имена файлов в дереве каталогов, перемещаясь по дереву либо сверху вниз, либо снизу вверх. Для каждого каталога в дереве, корень которого находится в каталоге top (включая сам top), это приводит к получению 3-х кортежей (dirpath, dirnames, filenames).

dirpath - это строка, путь к каталогу. dirnames - это список имен подкаталогов в dirpath (включая символические ссылки на каталоги и исключая '.' и '..'). filenames - это список имен файлов, не относящихся к каталогу, в dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (который начинается с top) к файлу или каталогу в dirpath, выполните os.path.join(dirpath, name). Сортировка списков зависит от файловой системы. Если файл удаляется из каталога dirpath или добавляется в него во время создания списков, не указано, будет ли указано имя для этого файла.

Если необязательный аргумент topdown равен True или не указан, тройка для каталога генерируется перед тройками для любого из его подкаталогов (каталоги генерируются сверху вниз). Если значение topdown равно False, то тройка для каталога генерируется после троек для всех его подкаталогов (каталоги генерируются снизу вверх). Независимо от значения параметра topdown, список подкаталогов извлекается до того, как будут сгенерированы кортежи для каталога и его подкаталогов.

Когда значение topdown равно True, вызывающий объект может изменить список dirnames на месте (возможно, используя del или назначение фрагмента), а walk() будет повторно использоваться только в подкаталогах, имена которых остаются в dirnames; это может быть использовано для сокращения поиска, установления определенного порядка посещения или даже для информирования walk() о каталогах, которые вызывающий абонент создает или переименовывает, прежде чем возобновить поиск walk() снова. Изменение dirnames, когда значение topdown равно False, не влияет на поведение перехода, поскольку в режиме «снизу вверх» каталоги в dirnames генерируются до того, как будет сгенерирован сам dirpath.

По умолчанию ошибки при вызове scandir() игнорируются. Если указан необязательный аргумент onerror, то это должна быть функция; она будет вызываться с одним аргументом, экземпляром OSError. Он может сообщить об ошибке, чтобы продолжить проверку, или вызвать исключение, чтобы прервать проверку. Обратите внимание, что имя файла доступно как атрибут filename объекта exception.

По умолчанию walk() не будет переходить по символическим ссылкам, которые ведут к каталогам. Установите для followlinks значение True, чтобы посещать каталоги, на которые указывают символические ссылки, в системах, которые их поддерживают.

Примечание

Имейте в виду, что установка для followlinks значения True может привести к бесконечной рекурсии, если ссылка сама по себе указывает на родительский каталог. walk() не отслеживает каталоги, которые она уже посетила.

Примечание

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

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

import os
from os.path import join, getsize
for root, dirs, files in os.walk('python/Lib/email'):
    print(root, "consumes", end=" ")
    print(sum(getsize(join(root, name)) for name in files), end=" ")
    print("bytes in", len(files), "non-directory files")
    if 'CVS' in dirs:
        dirs.remove('CVS')  # don't visit CVS directories

В следующем примере (простая реализация shutil.rmtree()) необходимо пройти по дереву снизу вверх, rmdir() не позволяет удалить каталог до того, как он станет пустым:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files in os.walk(top, topdown=False):
    for name in files:
        os.remove(os.path.join(root, name))
    for name in dirs:
        os.rmdir(os.path.join(root, name))

Создает auditing event os.walk с аргументами top, topdown, onerror, followlinks.

Изменено в версии 3.5: Эта функция теперь вызывает os.scandir() вместо os.listdir(), что ускоряет ее выполнение за счет сокращения количества вызовов до os.stat().

Изменено в версии 3.6: Принимает значение path-like object.

os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)

Это ведет себя точно так же, как walk(), за исключением того, что приводит к получению кортежа из 4 элементов (dirpath, dirnames, filenames, dirfd) и поддерживает dir_fd.

dirpath, dirnames и filenames идентичны walk() выводимым данным, а dirfd - это файловый дескриптор, ссылающийся на каталог dirpath.

Эта функция всегда поддерживает paths relative to directory descriptors и not following symlinks. Однако обратите внимание, что, в отличие от других функций, значением fwalk() по умолчанию для follow_symlinks является False.

Примечание

Поскольку fwalk() приводит к файловым дескрипторам, они действительны только до следующего шага итерации, поэтому вам следует дублировать их (например, с помощью dup()), если вы хотите сохранить их дольше.

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

import os
for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
    print(root, "consumes", end="")
    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
          end="")
    print("bytes in", len(files), "non-directory files")
    if 'CVS' in dirs:
        dirs.remove('CVS')  # don't visit CVS directories

В следующем примере важно пройти по дереву снизу вверх: rmdir() не позволяет удалить каталог до того, как он станет пустым:

# Delete everything reachable from the directory named in "top",
# assuming there are no symbolic links.
# CAUTION:  This is dangerous!  For example, if top == '/', it
# could delete all your disk files.
import os
for root, dirs, files, rootfd in os.fwalk(top, topdown=False):
    for name in files:
        os.unlink(name, dir_fd=rootfd)
    for name in dirs:
        os.rmdir(name, dir_fd=rootfd)

Создает auditing event os.fwalk с аргументами top, topdown, onerror, follow_symlinks, dir_fd.

Availability: Unix.

Добавлено в версии 3.3.

Изменено в версии 3.6: Принимает значение path-like object.

Изменено в версии 3.7: Добавлена поддержка путей bytes.

os.memfd_create(name[, flags=os.MFD_CLOEXEC])

Создайте анонимный файл и верните файловый дескриптор, который ссылается на него. flags должен быть одной из констант os.MFD_*, доступных в системе (или их побитовой комбинацией). По умолчанию новый файловый дескриптор равен non-inheritable.

Имя, указанное в name, используется в качестве имени файла и будет отображаться как адрес соответствующей символьной ссылки в каталоге /proc/self/fd/. Отображаемое имя всегда имеет префикс memfd: и служит только для целей отладки. Имена не влияют на поведение файлового дескриптора, и поэтому несколько файлов могут иметь одно и то же имя без каких-либо побочных эффектов.

Availability: Linux >= 3.17 с glibc >= 2.27.

Добавлено в версии 3.8.

os.MFD_CLOEXEC
os.MFD_ALLOW_SEALING
os.MFD_HUGETLB
os.MFD_HUGE_SHIFT
os.MFD_HUGE_MASK
os.MFD_HUGE_64KB
os.MFD_HUGE_512KB
os.MFD_HUGE_1MB
os.MFD_HUGE_2MB
os.MFD_HUGE_8MB
os.MFD_HUGE_16MB
os.MFD_HUGE_32MB
os.MFD_HUGE_256MB
os.MFD_HUGE_512MB
os.MFD_HUGE_1GB
os.MFD_HUGE_2GB
os.MFD_HUGE_16GB

Эти флаги могут быть переданы в memfd_create().

Availability: Linux >= 3.17 с glibc >= 2.27

Флаги MFD_HUGE* доступны только начиная с Linux 4.14.

Добавлено в версии 3.8.

os.eventfd(initval[, flags=os.EFD_CLOEXEC])

Создайте и верните файловый дескриптор события. Файловые дескрипторы поддерживают raw read() и write() с размером буфера, равным 8, select(), poll() и аналогичным. Смотрите справочную страницу eventfd(2) для получения дополнительной информации. По умолчанию новый файловый дескриптор равен non-inheritable.

initval - это начальное значение счетчика событий. Начальное значение должно быть 32-разрядным целым числом без знака. Пожалуйста, обратите внимание, что начальное значение ограничено 32-разрядным значением unsigned int, хотя счетчик событий представляет собой 64-разрядное целое число без знака с максимальным значением 264-2.

флаги могут быть сконструированы из EFD_CLOEXEC, EFD_NONBLOCK, и EFD_SEMAPHORE.

Если указано значение EFD_SEMAPHORE и счетчик событий отличен от нуля, eventfd_read() возвращает 1 и уменьшает значение счетчика на единицу.

Если EFD_SEMAPHORE не указано и счетчик событий отличен от нуля, eventfd_read() возвращает текущее значение счетчика событий и обнуляет счетчик.

Если счетчик событий равен нулю и EFD_NONBLOCK не указан, eventfd_read() блокируется.

eventfd_write() увеличивает счетчик событий. Запись блокируется, если операция записи приведет к увеличению счетчика до значения, превышающего 264-2.

Пример:

import os

# semaphore with start value '1'
fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC)
try:
    # acquire semaphore
    v = os.eventfd_read(fd)
    try:
        do_work()
    finally:
        # release semaphore
        os.eventfd_write(fd, v)
finally:
    os.close(fd)

Availability: Linux >= 2.6.27 с glibc >= 2.8

Добавлено в версии 3.10.

os.eventfd_read(fd)

Считывает значение из файлового дескриптора eventfd() и возвращает 64-разрядный int без знака. Функция не проверяет, что fd является eventfd().

Availability: Linux >= 2.6.27

Добавлено в версии 3.10.

os.eventfd_write(fd, value)

Добавьте значение к файловому дескриптору eventfd(). значение должно быть 64-разрядным значением int без знака. Функция не проверяет, является ли fd значением eventfd().

Availability: Linux >= 2.6.27

Добавлено в версии 3.10.

os.EFD_CLOEXEC

Установите флаг close-on-exec для нового файлового дескриптора eventfd().

Availability: Linux >= 2.6.27

Добавлено в версии 3.10.

os.EFD_NONBLOCK

Установите флаг состояния O_NONBLOCK для нового файлового дескриптора eventfd().

Availability: Linux >= 2.6.27

Добавлено в версии 3.10.

os.EFD_SEMAPHORE

Обеспечьте семантику, подобную семафору, для чтения из файлового дескриптора eventfd(). При чтении внутренний счетчик уменьшается на единицу.

Availability: Linux >= 2.6.30

Добавлено в версии 3.10.

Расширенные атрибуты Linux

Добавлено в версии 3.3.

Все эти функции доступны только в Linux.

os.getxattr(path, attribute, *, follow_symlinks=True)

Возвращает значение расширенного атрибута файловой системы attribute для path. атрибутом могут быть байты или str (прямо или косвенно через интерфейс PathLike). Если это str, то он кодируется в соответствии с кодировкой файловой системы.

Эта функция может поддерживать specifying a file descriptor и not following symlinks.

Создает auditing event os.getxattr с аргументами path, attribute.

Изменено в версии 3.6: Принимает значение path-like object для пути и атрибута.

os.listxattr(path=None, *, follow_symlinks=True)

Возвращает список расширенных атрибутов файловой системы в path. Атрибуты в списке представлены в виде строк, декодированных в соответствии с кодировкой файловой системы. Если путь равен None, listxattr(), то будет проверен текущий каталог.

Эта функция может поддерживать specifying a file descriptor и not following symlinks.

Создает auditing event os.listxattr с аргументом path.

Изменено в версии 3.6: Принимает значение path-like object.

os.removexattr(path, attribute, *, follow_symlinks=True)

Удаляет атрибут расширенной файловой системы attribute из path. Атрибутом * должны быть байты или str (прямо или косвенно через интерфейс PathLike). Если это строка, то она кодируется символом filesystem encoding and error handler.

Эта функция может поддерживать specifying a file descriptor и not following symlinks.

Создает auditing event os.removexattr с аргументами path, attribute.

Изменено в версии 3.6: Принимает значение path-like object для пути и атрибута.

os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)

Установите для расширенного атрибута файловой системы attribute в path значение*. атрибут должен представлять собой байт или строку str без встроенных нулей (прямо или косвенно через интерфейс PathLike). Если это str, то он кодируется с помощью filesystem encoding and error handler. флаги могут быть XATTR_REPLACE или XATTR_CREATE. Если задано значение XATTR_REPLACE, а атрибут не существует, то будет поднят значение ENODATA. Если задано значение XATTR_CREATE и атрибут уже существует, атрибут не будет создан и будет поднят значение EEXISTS.

Эта функция может поддерживать specifying a file descriptor и not following symlinks.

Примечание

Ошибка в ядре Linux версии ниже 2.6.39 привела к игнорированию аргумента flags в некоторых файловых системах.

Создает auditing event os.setxattr с аргументами path, attribute, value, flags.

Изменено в версии 3.6: Принимает значение path-like object для пути и атрибута.

os.XATTR_SIZE_MAX

Максимальный размер, который может иметь значение расширенного атрибута. В настоящее время в Linux это значение составляет 64 Кбайт.

os.XATTR_CREATE

Это возможное значение для аргумента flags в setxattr(). Оно указывает, что операция должна создать атрибут.

os.XATTR_REPLACE

Это возможное значение для аргумента flags в setxattr(). Оно указывает, что операция должна заменить существующий атрибут.

Управление процессами

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

Различные функции exec* принимают список аргументов для новой программы, загруженной в процесс. В каждом случае первый из этих аргументов передается новой программе как ее собственное имя, а не как аргумент, который пользователь мог ввести в командной строке. Для программиста на C это argv[0], передаваемый в код программы main(). Например, os.execv('/bin/echo', ['foo', 'bar']) будет выводиться только bar при стандартном выводе; foo будет игнорироваться.

os.abort()

Сгенерируйте сигнал SIGABRT для текущего процесса. В Unix по умолчанию создается дамп ядра; в Windows процесс немедленно возвращает код завершения, равный 3. Имейте в виду, что вызов этой функции не вызовет обработчик сигналов Python, зарегистрированный для SIGABRT с помощью signal.signal().

os.add_dll_directory(path)

Добавьте путь к пути поиска библиотеки DLL.

Этот путь поиска используется при разрешении зависимостей для импортированных модулей расширения (сам модуль разрешен с помощью sys.path), а также с помощью ctypes.

Удалите каталог, вызвав функцию close() для возвращаемого объекта или используя ее в инструкции with.

Смотрите раздел Microsoft documentation для получения дополнительной информации о том, как загружаются библиотеки DLL.

Создает auditing event os.add_dll_directory с аргументом path.

Availability: Окна.

Добавлено в версии 3.8: Предыдущие версии Python разрешали библиотеки DLL, используя поведение по умолчанию для текущего процесса. Это приводило к несогласованностям, таким как поиск только в PATH или текущем рабочем каталоге, а функции операционной системы, такие как AddDllDirectory, не имели эффекта.

В версии 3.8 два основных способа загрузки библиотек DLL теперь явно переопределяют поведение всего процесса для обеспечения согласованности. Информацию об обновлении библиотек смотрите в porting notes.

os.execl(path, arg0, arg1, ...)
os.execle(path, arg0, arg1, ..., env)
os.execlp(file, arg0, arg1, ...)
os.execlpe(file, arg0, arg1, ..., env)
os.execv(path, args)
os.execve(path, args, env)
os.execvp(file, args)
os.execvpe(file, args, env)

Все эти функции запускают новую программу, заменяющую текущий процесс; они не возвращают результат. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут отображаться как исключения OSError.

Текущий процесс будет немедленно заменен. Объекты и дескрипторы открытых файлов не очищаются, поэтому, если в этих открытых файлах могут быть буферизованы данные, вам следует очистить их с помощью sys.stdout.flush() или os.fsync() перед вызовом функции exec*.

Варианты «l» и «v» функций exec* отличаются способом передачи аргументов командной строки. С вариантами «l», пожалуй, проще всего работать, если количество параметров фиксировано при написании кода; отдельные параметры просто становятся дополнительными параметрами для функций execl*(). Варианты «v» хороши, когда количество параметров является переменным, а аргументы передаются в виде списка или кортежа в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не обязательно.

Варианты, которые содержат букву «р» в конце (execlp(), execlpe(), execvp(), и execvpe()), будут использовать переменную окружения PATH для определения местоположения файла программы program . При замене среды (с использованием одного из вариантов :func:`exec*e <execl>`, рассмотренных в следующем параграфе) новая среда используется в качестве источника переменной :envvar:`PATH`. Другие варианты, :func:`execl`, :func:`execle`, :func:`execv`, и :func:`execve` не будут использовать переменную :envvar:`PATH` для определения местоположения исполняемого файла; *path должен содержать соответствующий абсолютный или относительный путь.

Для execle(), execlpe(), execve(), и execvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных среды для нового процесса (они используются вместо среды текущего процесса); функции execl(), execlp(), execv(), и execvp() все это приводит к тому, что новый процесс наследует среду текущего процесса.

Для execve() на некоторых платформах в качестве дескриптора открытого файла также может быть указан path. Возможно, эта функция не поддерживается на вашей платформе; вы можете проверить, доступна ли она, с помощью os.supports_fd. Если он недоступен, при его использовании появится сообщение NotImplementedError.

Создает auditing event os.exec с аргументами path, args, env.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

Изменено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла для execve().

Изменено в версии 3.6: Принимает значение path-like object.

os._exit(n)

Завершите процесс со статусом n, не вызывая обработчиков очистки, не очищая буферы stdio и т.д.

Примечание

Стандартный способ завершения sys.exit(n). _exit() обычно должен использоваться в дочернем процессе только после fork().

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

Примечание

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

os.EX_OK

Код завершения, означающий, что ошибка не произошла. Может быть взят из определенного значения EXIT_SUCCESS на некоторых платформах. Обычно имеет нулевое значение.

Availability: Unix, Windows.

os.EX_USAGE

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_DATAERR

Код выхода, означающий, что введенные данные были неверными.

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_NOINPUT

Код завершения, означающий, что входной файл не существовал или был недоступен для чтения.

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_NOUSER

Код выхода, означающий, что указанный пользователь не существовал.

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_NOHOST

Код завершения, означающий, что указанный хост не существует.

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_UNAVAILABLE

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_SOFTWARE

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_OSERR

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_OSFILE

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_CANTCREAT

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_IOERR

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_TEMPFAIL

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_PROTOCOL

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_NOPERM

Код завершения, означающий, что для выполнения операции было недостаточно разрешений (но не предназначенный для устранения проблем с файловой системой).

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_CONFIG

Код завершения, означающий, что произошла какая-то ошибка конфигурации.

Availability: Unix, не Emscripten, не БЫЛ I.

os.EX_NOTFOUND

Код выхода, который означает что-то вроде «запись не найдена».

Availability: Unix, не Emscripten, не БЫЛ I.

os.fork()

Разветвление дочернего процесса. Возвращает 0 в дочернем и идентификатор дочернего процесса в родительском. При возникновении ошибки генерируется OSError.

Обратите внимание, что некоторые платформы, включая FreeBSD <= 6.3 и Cygwin, имеют известные проблемы при использовании fork() из потока.

Выдает auditing event os.fork без каких-либо аргументов.

Предупреждение

В macOS использование этой функции небезопасно в сочетании с использованием системных API более высокого уровня, включая использование urllib.request.

Изменено в версии 3.8: Вызов fork() во вспомогательном интерпретаторе больше не поддерживается (вызывается RuntimeError).

Предупреждение

Смотрите ssl для приложений, использующих SSL-модуль с функцией fork().

Availability: Unix, не Emscripten, не БЫЛ I.

os.forkpty()

Разветвите дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару (pid, fd), где pid - это 0 в дочернем элементе, идентификатор процесса нового дочернего элемента в родительском, а fd - файловый дескриптор главного конца псевдотерминала. Для более удобного использования используйте модуль pty. При возникновении ошибки возникает сообщение OSError.

Выдает auditing event os.forkpty без каких-либо аргументов.

Предупреждение

В macOS использование этой функции небезопасно в сочетании с использованием системных API более высокого уровня, включая использование urllib.request.

Изменено в версии 3.8: Вызов forkpty() во вспомогательном интерпретаторе больше не поддерживается (вызывается RuntimeError).

Availability: Unix, не Emscripten, не БЫЛ I.

os.kill(pid, sig, /)

Отправьте сигнал sig процессу pid. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле signal.

Windows: Сигналы signal.CTRL_C_EVENT и signal.CTRL_BREAK_EVENT являются специальными сигналами, которые могут быть отправлены только консольным процессам, которые совместно используют общее окно консоли, например, некоторым подпроцессам. Любое другое значение для sig приведет к безусловному завершению процесса API-интерфейсом TerminateProcess, и код завершения будет установлен в sig. В Windows-версии kill() дополнительно используются дескрипторы процесса для завершения.

Смотрите также signal.pthread_kill().

Создает auditing event os.kill с аргументами pid, sig.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

Изменено в версии 3.2: Добавлена поддержка Windows.

os.killpg(pgid, sig, /)

Отправьте сигнал sig в группу процессов pgid.

Создает auditing event os.killpg с аргументами pgid, sig.

Availability: Unix, не Emscripten, не БЫЛ I.

os.nice(increment, /)

Добавьте приращение к «приятности» процесса. Верните новую приятность.

Availability: Unix, не Emscripten, не БЫЛ I.

os.pidfd_open(pid, flags=0)

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

Смотрите справочную страницу pidfd_open(2) для получения более подробной информации.

Availability: Linux >= 5.3

Добавлено в версии 3.9.

os.plock(op, /)

Блокировка сегментов программы в памяти. Значение op (заданное в <sys/lock.h>) определяет, какие сегменты будут заблокированы.

Availability: Unix, не Emscripten, не БЫЛ I.

os.popen(cmd, mode='r', buffering=-1)

Откройте канал с помощью команды cmd или из нее. Возвращаемое значение - это открытый файловый объект, подключенный к каналу, который может быть прочитан или записан в зависимости от того, имеет ли mode значение 'r' (по умолчанию) или 'w'. Аргумент buffering имеет то же значение, что и соответствующий аргумент встроенной функции open(). Возвращаемый файловый объект считывает или записывает текстовые строки, а не байты.

Метод close возвращает None, если подпроцесс успешно завершился, или подпроцесс возвращает код, если произошла ошибка. В системах POSIX, если код возврата положительный, он представляет возвращаемое значение процесса, сдвинутое влево на один байт. Если код возврата отрицательный, процесс был завершен по сигналу, полученному в результате отрицательного значения кода возврата. (Например, возвращаемое значение может быть - signal.SIGKILL, если подпроцесс был остановлен.) В системах Windows возвращаемое значение содержит код возврата целого числа со знаком из дочернего процесса.

В Unix waitstatus_to_exitcode() может использоваться для преобразования результата метода close (статус завершения) в код завершения, если это не None. В Windows результатом метода close является непосредственно код выхода (или None).

Это реализовано с помощью subprocess.Popen; смотрите документацию по этому классу для получения более эффективных способов управления подпроцессами и взаимодействия с ними.

Availability: это не Emscripten, это был не я.

Примечание

Python UTF-8 Mode влияет на кодировки, используемые для cmd и содержимого канала.

popen() является простой оболочкой для subprocess.Popen. Используйте subprocess.Popen или subprocess.run() для управления такими параметрами, как кодировки.

os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Обертывает API библиотеки posix_spawn() C для использования с Python.

Большинству пользователей следует использовать subprocess.run() вместо posix_spawn().

Позиционные аргументы path, args и env аналогичны execve().

Параметр path указывает путь к исполняемому файлу. Параметр path должен содержать каталог. Используйте posix_spawnp(), чтобы передать исполняемый файл без каталога.

Аргумент file_actions может быть последовательностью кортежей, описывающих действия, выполняемые с определенными файловыми дескрипторами в дочернем процессе между шагами реализации библиотеки C fork() и exec(). Первым элементом в каждом кортеже должен быть один из трех перечисленных ниже индикаторов типа, описывающих остальные элементы кортежа:

os.POSIX_SPAWN_OPEN

(os.POSIX_SPAWN_OPEN, * fd*, путь, флаги, режим)

Выполняет os.dup2(os.open(path, flags, mode), fd).

os.POSIX_SPAWN_CLOSE

(os.POSIX_SPAWN_CLOSE, * fd*)

Выполняет os.close(fd).

os.POSIX_SPAWN_DUP2

(os.POSIX_SPAWN_DUP2, * fd*, new_fd)

Выполняет os.dup2(fd, new_fd).

Эти кортежи соответствуют библиотеке C posix_spawn_file_actions_addopen(), posix_spawn_file_actions_addclose() и posix_spawn_file_actions_adddup2() Вызовам API, используемым для подготовки к самому вызову posix_spawn().

Аргумент setpgroup установит для дочерней группы процессов указанное значение. Если указанное значение равно 0, идентификатор дочерней группы процессов будет таким же, как и его идентификатор процесса. Если значение setpgroup не задано, дочерний процесс унаследует идентификатор родительской группы процессов. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETPGROUP.

Если аргумент resetids равен True, то эффективные UID и GID дочернего процесса будут сброшены на реальные UID и GID родительского процесса. Если аргумент равен False, то дочерний элемент сохраняет действующие UID и GID родительского элемента. В любом случае, если для исполняемого файла включены биты разрешений set-user-ID и set-group-ID, их действие будет переопределять установку эффективных UID и GID. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_RESETIDS.

Если аргумент setsid равен True, то для posix_spawn будет создан новый идентификатор сеанса. Для setsid требуется флаг POSIX_SPAWN_SETSID или POSIX_SPAWN_SETSID_NP. В противном случае будет поднят NotImplementedError.

Аргумент setsigmask установит для сигнальной маски значение, соответствующее указанному набору сигналов. Если параметр не используется, дочерний элемент наследует сигнальную маску родительского элемента. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETSIGMASK.

Аргумент sigdef изменит расположение всех сигналов в указанном наборе. Этот аргумент соответствует флагу библиотеки C POSIX_SPAWN_SETSIGDEF.

Аргументом scheduler должен быть кортеж, содержащий (необязательную) политику планировщика и экземпляр sched_param с параметрами планировщика. Значение None вместо политики планировщика указывает на то, что оно не предоставляется. Этот аргумент представляет собой комбинацию флагов библиотеки C POSIX_SPAWN_SETSCHEDPARAM и POSIX_SPAWN_SETSCHEDULER.

Создает auditing event os.posix_spawn с аргументами path, argv, env.

Добавлено в версии 3.8.

Availability: Unix, не Emscripten, не БЫЛ I.

os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)

Обертывает API библиотеки posix_spawnp() C для использования с Python.

Аналогично posix_spawn(), за исключением того, что система выполняет поиск исполняемого файла в списке каталогов, указанных переменной окружения PATH (аналогично execvp(3)).

Создает auditing event os.posix_spawn с аргументами path, argv, env.

Добавлено в версии 3.8.

Availability: POSIX, а не Emscripten, это был не я.

Смотрите документацию posix_spawn().

os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)

Зарегистрируйте вызываемые объекты, которые будут выполняться при разветвлении нового дочернего процесса с использованием os.fork() или аналогичных API-интерфейсов для клонирования процессов. Параметры являются необязательными и зависят только от ключевых слов. Каждый из них определяет другую точку вызова.

  • before - это функция, вызываемая перед разветвлением дочернего процесса.

  • after_in_parent - это функция, вызываемая из родительского процесса после разветвления дочернего процесса.

  • after_in_child - это функция, вызываемая из дочернего процесса.

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

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

Обратите внимание, что вызовы fork(), выполняемые сторонним кодом C, могут не вызывать эти функции, если только они явно не вызывают PyOS_BeforeFork(), PyOS_AfterFork_Parent() и PyOS_AfterFork_Child().

Нет никакого способа отменить регистрацию функции.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.7.

os.spawnl(mode, path, ...)
os.spawnle(mode, path, ..., env)
os.spawnlp(mode, file, ...)
os.spawnlpe(mode, file, ..., env)
os.spawnv(mode, path, args)
os.spawnve(mode, path, args, env)
os.spawnvp(mode, file, args)
os.spawnvpe(mode, file, args, env)

Запустите программу path в новом процессе.

(Обратите внимание, что модуль subprocess предоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Обратите особое внимание на раздел Замена старых функций модулем subprocess.)

Если значение mode равно P_NOWAIT, эта функция возвращает идентификатор нового процесса; если значение mode равно P_WAIT, возвращает код завершения процесса, если он завершается нормально, или -signal, где сигнал - это сигнал, который остановил процесс. В Windows идентификатор процесса фактически является дескриптором процесса, поэтому его можно использовать с функцией waitpid().

Обратите внимание, что в VxWorks эта функция не возвращает -signal при завершении нового процесса. Вместо этого она вызывает исключение OSError.

Варианты «l» и «v» функций spawn* отличаются способом передачи аргументов командной строки. С вариантами «l», пожалуй, проще всего работать, если количество параметров фиксировано при написании кода; отдельные параметры просто становятся дополнительными параметрами для функций spawnl*(). Варианты «v» хороши, когда количество параметров является переменным, а аргументы передаются в виде списка или кортежа в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.

В вариантах, которые содержат вторую букву «р» в конце (spawnlp(), spawnlpe(), spawnvp(), и spawnvpe()), будет использоваться переменная среды PATH для определения местоположения файла программы*. При замене среды (с использованием одного из вариантов spawn*e, рассмотренных в следующем параграфе) новая среда используется в качестве источника переменной PATH. Другие варианты, spawnl(), spawnle(), spawnv(), и spawnve() не будут использовать переменную PATH для определения местоположения исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.

Для spawnle(), spawnlpe(), spawnve(), и spawnvpe() (обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных среды для нового процесса (они используются вместо среды текущего процесса); функции spawnl(), spawnlp(), spawnv(), и spawnvp() все это приводит к тому, что новый процесс наследует среду текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками; недопустимые ключи или значения приведут к сбою функции с возвращаемым значением 127.

В качестве примера, следующие вызовы spawnlp() и spawnvpe() эквивалентны:

import os
os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')

L = ['cp', 'index.html', '/dev/null']
os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)

Создает auditing event os.spawn с аргументами mode, path, args, env.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

spawnlp(), spawnlpe(), spawnvp() и spawnvpe() недоступны в Windows. spawnle() и spawnve() не являются потокобезопасными в Windows; мы рекомендуем вам использовать вместо них модуль subprocess.

Изменено в версии 3.6: Принимает значение path-like object.

os.P_NOWAIT
os.P_NOWAITO

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

Availability: Unix, Windows.

os.P_WAIT

Возможное значение параметра mode для семейства функций spawn*. Если это значение задано как mode, функции spawn* не будут возвращаться до тех пор, пока новый процесс не будет запущен до завершения и не вернет код завершения процесса, запуск которого завершен успешно, или -signal, если сигнал завершит процесс.

Availability: Unix, Windows.

os.P_DETACH
os.P_OVERLAY

Возможные значения параметра mode для семейства функций spawn*. Они менее переносимы, чем перечисленные выше. P_DETACH похож на P_NOWAIT, но новый процесс отсоединен от консоли вызывающего процесса. Если используется P_OVERLAY, текущий процесс будет заменен; функция spawn* не будет возвращена.

Availability: Окна.

os.startfile(path[, operation][, arguments][, cwd][, show_cmd])

Запустите файл с помощью связанного с ним приложения.

Когда операция не указана или 'open', это действует подобно двойному щелчку по файлу в проводнике Windows или указанию имени файла в качестве аргумента для команды start из интерактивной командной оболочки: файл открывается любым приложением (если таковые имеются) связано с его расширением.

Когда задается другая операция, это должен быть «командный глагол», который указывает, что следует делать с файлом. Распространенными глаголами, задокументированными Microsoft, являются 'print' и 'edit' (для использования в файлах), а также 'explore' и 'find' (для использования в каталогах).

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

Рабочий каталог по умолчанию наследуется, но может быть переопределен аргументом cwd. Это должен быть абсолютный путь. Относительный путь* будет разрешен с помощью этого аргумента.

Используйте show_cmd, чтобы переопределить стиль окна по умолчанию. Будет ли это иметь какой-либо эффект, зависит от запускаемого приложения. Значения являются целыми числами, поддерживаемыми функцией Win32 ShellExecute().

startfile() возвращается, как только запускается связанное приложение. Нет возможности дождаться закрытия приложения и нет возможности получить статус завершения работы приложения. Параметр path относится к текущему каталогу или cwd. Если вы хотите использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'). Используйте функцию pathlib или функцию os.path.normpath(), чтобы убедиться, что пути правильно закодированы для Win32.

Чтобы снизить затраты на запуск интерпретатора, функция Win32 ShellExecute() не будет разрешена до тех пор, пока эта функция не будет вызвана в первый раз. Если функция не может быть разрешена, будет запущен NotImplementedError.

Создает auditing event os.startfile с аргументами path, operation.

Создает auditing event os.startfile/2 с аргументами path, operation, arguments, cwd, show_cmd.

Availability: Окна.

Изменено в версии 3.10: Добавлены аргументы arguments, cwd и show_cmd, а также событие аудита os.startfile/2.

os.system(command)

Выполните команду (строку) в подоболочке. Это реализуется путем вызова стандартной функции C system() и имеет те же ограничения. Изменения в sys.stdin и т.д. не отражаются на среде выполнения команды. Если command генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет значение возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.

В Unix возвращаемое значение - это статус завершения процесса, закодированный в формате, указанном для wait().

В Windows возвращаемое значение равно тому, которое возвращается системной оболочкой после выполнения command. Оболочка задается переменной среды Windows COMSPEC: обычно это cmd.exe, которая возвращает статус завершения выполнения команды; в системах, использующих неродную оболочку, обратитесь к документации по оболочке.

Модуль subprocess предоставляет более мощные возможности для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее использования этой функции. Некоторые полезные рецепты приведены в разделе Замена старых функций модулем subprocess документации subprocess.

В Unix waitstatus_to_exitcode() может использоваться для преобразования результата (статуса завершения) в код завершения. В Windows результатом является непосредственно код завершения.

Создает auditing event os.system с аргументом command.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

os.times()

Возвращает текущее время глобального процесса. Возвращаемое значение представляет собой объект с пятью атрибутами:

  • user - время работы пользователя

  • system - системное время

  • children_user - пользовательское время всех дочерних процессов

  • children_system - системное время всех дочерних процессов

  • elapsed - реальное время, прошедшее с фиксированной точки в прошлом.

Для обеспечения обратной совместимости этот объект также ведет себя как кортеж из пяти элементов, содержащий user, system, children_user, children_system, и elapsed в указанном порядке.

Смотрите страницу руководства по Unix times(2) и страницу руководства по times(3) в Unix или the GetProcessTimes MSDN в Windows. В Windows известны только user и system; остальные атрибуты равны нулю.

Availability: Unix, Windows.

Изменено в версии 3.3: Возвращаемый тип изменен с кортежа на объект, подобный кортежу, с именованными атрибутами.

os.wait()

Дождитесь завершения дочернего процесса и верните кортеж, содержащий его pid и указание статуса завершения: 16-разрядное число, младший байт которого - это номер сигнала, завершившего процесс, а старший байт - статус завершения (если номер сигнала равен нулю); старший бит исходного кода. младший байт устанавливается, если был создан основной файл.

Если нет дочерних элементов, которых можно было бы ожидать, вводится значение ChildProcessError.

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

Availability: Unix, не Emscripten, не БЫЛ I.

См.также

Другие функции wait*(), описанные ниже, могут использоваться для ожидания завершения определенного дочернего процесса и имеют больше возможностей. waitpid() - единственная функция, которая также доступна в Windows.

os.waitid(idtype, id, options, /)

Дождитесь завершения дочернего процесса.

idtype может быть P_PID, P_PGID, P_ALL, или (в Linux) P_PIDFD. От этого зависит интерпретация id; смотрите их индивидуальные описания.

опции - это комбинация флагов ИЛИ. Требуется по крайней мере один из флагов WEXITED, WSTOPPED или WCONTINUED; WNOHANG и WNOWAIT являются дополнительными необязательными флагами.

Возвращаемое значение - это объект, представляющий данные, содержащиеся в структуре siginfo_t со следующими атрибутами:

  • si_pid (идентификатор процесса)

  • si_uid (реальный идентификатор пользователя дочернего устройства)

  • si_signo (всегда SIGCHLD)

  • si_status (статус выхода или номер сигнала, в зависимости от si_code)

  • si_code (возможные значения приведены в разделе CLD_EXITED)

Если указано значение WNOHANG и в запрошенном состоянии нет подходящих дочерних элементов, возвращается значение None. В противном случае, если нет подходящих дочерних элементов, которых можно было бы ожидать, вызывается значение ChildProcessError.

Availability: Unix, не Emscripten, не БЫЛ I.

Примечание

Эта функция недоступна в Mac OS.

Добавлено в версии 3.3.

os.waitpid(pid, options, /)

Детали этой функции различаются в Unix и Windows.

В Unix: Дождитесь завершения дочернего процесса, заданного идентификатором процесса pid, и верните кортеж, содержащий его идентификатор процесса и указание статуса завершения (закодированный как wait()). На семантику вызова влияет значение целого числа options, которое должно быть 0 для нормальной работы.

Если pid больше, чем 0, waitpid() запрашивает информацию о состоянии для этого конкретного процесса. Если значение pid равно 0, запрос относится к статусу любого дочернего процесса в группе процессов текущего процесса. Если значение pid равно -1, запрос относится к любому дочернему процессу текущего процесса. Если значение pid меньше -1, запрашивается статус для любого процесса в группе процессов -pid (абсолютное значение pid).

options - это комбинация флагов ИЛИ. Если он содержит WNOHANG и в запрошенном состоянии нет соответствующих дочерних элементов, возвращается (0, 0). В противном случае, если нет подходящих дочерних элементов, которых можно было бы ожидать, вызывается ChildProcessError. Можно использовать и другие варианты: WUNTRACED и WCONTINUED.

В Windows: дождитесь завершения процесса, заданного дескриптором процесса pid, и верните кортеж, содержащий pid, а его статус завершения сдвинут влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). Значение pid, меньшее или равное 0, не имеет особого значения в Windows и вызывает исключение. Значение integer options не имеет значения. pid может относиться к любому процессу, идентификатор которого известен, не обязательно к дочернему процессу. Функции spawn*, вызываемые с помощью P_NOWAIT, возвращают подходящие дескрипторы процесса.

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

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение InterruptedError (объяснение смотрите в PEP 475).

os.wait3(options)

Аналогично waitpid(), за исключением того, что аргумент process id не задается и возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, указание статуса завершения и информацию об использовании ресурсов. Подробные сведения об использовании ресурсов приведены в resource.getrusage(). Аргумент options такой же, как и для waitpid() и wait4().

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.wait4(pid, options)

Аналогично waitpid(), за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, указание статуса завершения и информацию об использовании ресурсов. Подробные сведения об использовании ресурсов приведены в resource.getrusage(). Аргументы для wait4() те же, что и для waitpid().

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

Availability: Unix, не Emscripten, не БЫЛ I.

os.P_PID
os.P_PGID
os.P_ALL
os.P_PIDFD

Это возможные значения для idtype в waitid(). Они влияют на интерпретацию id:

  • P_PID - дождитесь дочернего элемента, чей PID равен id.

  • P_PGID - дождитесь любого дочернего элемента, чей идентификатор группы прогресса равен id.

  • P_ALL - ожидание любого дочернего элемента; id игнорируется.

  • P_PIDFD - дождитесь дочернего элемента, идентифицированного файловым дескриптором id (файловый дескриптор процесса, созданный с помощью pidfd_open()).

Availability: Unix, не Emscripten, не БЫЛ I.

Примечание

P_PIDFD доступно только в Linux >= 5.4.

Добавлено в версии 3.3.

Добавлено в версии 3.9: Константа P_PIDFD.

os.WCONTINUED

Этот флажок options для waitpid(), wait3(), wait4(), и waitid() приводит к тому, что дочерние процессы будут отображаться в отчетах, если они были продолжены после остановки управления заданиями с момента последнего сообщения о них.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WEXITED

Этот флаг options для waitid() приводит к появлению отчетов о дочерних процессах, которые завершились.

Другие функции wait* всегда сообщают о дочерних функциях, которые завершили работу, поэтому для них эта опция недоступна.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.WSTOPPED

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

Эта опция недоступна для других функций wait*.

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

os.WUNTRACED

Этот флажок options для waitpid(), wait3(), и wait4() приводит к тому, что дочерние процессы также будут отображаться, если они были остановлены, но об их текущем состоянии не сообщалось с момента их остановки.

Эта опция недоступна для waitid().

Availability: Unix, не Emscripten, не БЫЛ I.

os.WNOHANG

Этот флаг options вызывает немедленный возврат waitpid(), wait3(), wait4(), и waitid(), если статус дочернего процесса недоступен немедленно.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WNOWAIT

Этот флаг options приводит к тому, что waitid() дочерний элемент остается в состоянии ожидания, так что более поздний вызов wait*() может быть использован для повторного получения информации о статусе дочернего элемента.

Эта опция недоступна для других функций wait*.

Availability: Unix, не Emscripten, не БЫЛ I.

os.CLD_EXITED
os.CLD_KILLED
os.CLD_DUMPED
os.CLD_TRAPPED
os.CLD_STOPPED
os.CLD_CONTINUED

Это возможные значения для si_code в результате, возвращаемом waitid().

Availability: Unix, не Emscripten, не БЫЛ I.

Добавлено в версии 3.3.

Изменено в версии 3.9: Добавлены значения CLD_KILLED и CLD_STOPPED.

os.waitstatus_to_exitcode(status)

Преобразуйте статус ожидания в код выхода.

В Unix:

  • Если процесс завершился нормально (если значение WIFEXITED(status) равно true), верните статус завершения процесса (верните WEXITSTATUS(status)): результат больше или равен 0.

  • Если процесс был прерван сигналом (если WIFSIGNALED(status) равно true), верните -signum, где signum - номер сигнала, который вызвал завершение процесса (верните -WTERMSIG(status)): результат меньше 0.

  • В противном случае поднимите значение ValueError.

В Windows верните значение status, сдвинутое вправо на 8 бит.

В Unix, если процесс отслеживается или если waitpid() был вызван с параметром WUNTRACED, вызывающий должен сначала проверить, имеет ли значение WIFSTOPPED(status) значение true. Эта функция не должна вызываться, если WIFSTOPPED(status) имеет значение true.

Availability: Unix, Windows, не Emscripten, не БЫЛ я.

Добавлено в версии 3.9.

Следующие функции принимают в качестве параметра код состояния процесса, возвращаемый с помощью system(), wait(), или waitpid(). Они могут использоваться для определения состояния процесса.

os.WCOREDUMP(status, /)

Возвращает True, если для процесса был сгенерирован дамп ядра, в противном случае возвращает False.

Эту функцию следует использовать только в том случае, если WIFSIGNALED() имеет значение true.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WIFCONTINUED(status)

Верните True, если остановленный дочерний элемент был возобновлен с помощью SIGCONT (если процесс был продолжен с момента остановки управления заданием), в противном случае верните False.

Смотрите параметр WCONTINUED.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WIFSTOPPED(status)

Верните True, если процесс был остановлен подачей сигнала, в противном случае верните False.

WIFSTOPPED() возвращает True только в том случае, если вызов waitpid() был выполнен с использованием опции WUNTRACED или когда процесс отслеживается (см. ptrace(2)).

Availability: Unix, не Emscripten, не БЫЛ I.

os.WIFSIGNALED(status)

Верните True, если процесс был прерван сигналом, в противном случае верните False.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WIFEXITED(status)

Возвращает True, если процесс завершился нормально, то есть путем вызова exit() или _exit(), или путем возврата из main(); в противном случае возвращает False.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WEXITSTATUS(status)

Верните статус завершения процесса.

Эту функцию следует использовать только в том случае, если WIFEXITED() имеет значение true.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WSTOPSIG(status)

Возвращает сигнал, который вызвал остановку процесса.

Эту функцию следует использовать только в том случае, если WIFSTOPPED() имеет значение true.

Availability: Unix, не Emscripten, не БЫЛ I.

os.WTERMSIG(status)

Возвращает номер сигнала, который привел к завершению процесса.

Эту функцию следует использовать только в том случае, если WIFSIGNALED() имеет значение true.

Availability: Unix, не Emscripten, не БЫЛ I.

Интерфейс к планировщику

Эти функции управляют тем, как операционная система распределяет процессорное время для процесса. Они доступны только на некоторых платформах Unix. Для получения более подробной информации обратитесь к страницам руководства по Unix.

Добавлено в версии 3.3.

Следующие политики планирования доступны, если они поддерживаются операционной системой.

os.SCHED_OTHER

Политика планирования по умолчанию.

os.SCHED_BATCH

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

os.SCHED_IDLE

Политика планирования фоновых задач с крайне низким приоритетом.

os.SCHED_SPORADIC

Политика планирования для спорадических серверных программ.

os.SCHED_FIFO

Политика планирования «Первый пришел - первый вышел».

os.SCHED_RR

Политика циклического планирования.

os.SCHED_RESET_ON_FORK

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

class os.sched_param(sched_priority)

Этот класс представляет настраиваемые параметры планирования, используемые в sched_setparam(), sched_setscheduler(), и sched_getparam(). Он неизменяем.

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

sched_priority

Приоритет планирования для политики планирования.

os.sched_get_priority_min(policy)

Получите минимальное значение приоритета для policy. policy - это одна из констант политики планирования, приведенных выше.

os.sched_get_priority_max(policy)

Получите максимальное значение приоритета для policy. policy - это одна из констант политики планирования, приведенных выше.

os.sched_setscheduler(pid, policy, param, /)

Задайте политику планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. policy - это одна из констант политики планирования, приведенных выше. param - это sched_param экземпляр.

os.sched_getscheduler(pid, /)

Возвращает политику планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. Результатом является одна из констант политики планирования, приведенных выше.

os.sched_setparam(pid, param, /)

Задайте параметры планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. param - это sched_param экземпляр.

os.sched_getparam(pid, /)

Возвращает параметры планирования в виде экземпляра sched_param для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.

os.sched_rr_get_interval(pid, /)

Возвращает количество циклов в секундах для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс.

os.sched_yield()

Добровольно откажитесь от центрального процессора.

os.sched_setaffinity(pid, mask, /)

Ограничьте процесс с помощью PID pid (или текущего процесса, если он равен нулю) набором процессоров. mask - это повторяемое число целых чисел, представляющее набор процессоров, которыми должен быть ограничен процесс.

os.sched_getaffinity(pid, /)

Возвращает набор процессоров, на которые ограничен процесс с PID pid.

Если pid равен нулю, возвращает набор процессоров, которыми ограничен вызывающий поток текущего процесса.

Дополнительная информация о системе

os.confstr(name, /)

Возвращает строковые значения системной конфигурации. name указывает значение конфигурации для извлечения; это может быть строка, которая является именем определенного системного значения; эти имена указаны в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, задаются в качестве ключей словаря confstr_names. Для переменных конфигурации, не включенных в это сопоставление, также допускается передача целого числа вместо name.

Если значение конфигурации, указанное в name, не определено, возвращается None.

Если name является строкой и не известен, то выводится значение ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно включено в confstr_names, для номера ошибки генерируется OSError с errno.EINVAL.

Availability: Unix.

os.confstr_names

Словарь сопоставляет имена, принимаемые confstr(), с целыми значениями, определенными для этих имен операционной системой хоста. Это может использоваться для определения набора имен, известных системе.

Availability: Unix.

os.cpu_count()

Возвращает количество логических процессоров в системе. Возвращает None, если значение не определено.

Это число не эквивалентно количеству логических процессоров, которые может использовать текущий процесс. len(os.sched_getaffinity(0)) возвращает количество логических процессоров, доступ к которым ограничен для вызывающего потока текущего процесса

Добавлено в версии 3.4.

os.getloadavg()

Возвращает среднее количество процессов в очереди запуска системы за последние 1, 5 и 15 минут или увеличивает значение OSError, если среднее значение загрузки было недоступно.

Availability: Unix.

os.sysconf(name, /)

Возвращает целочисленные значения конфигурации системы. Если значение конфигурации, указанное в name, не определено, возвращается -1. Комментарии, касающиеся параметра name для confstr(), применимы и здесь; словарь, содержащий информацию об известных именах, приведен в sysconf_names.

Availability: Unix.

os.sysconf_names

Словарь сопоставляет имена, принимаемые sysconf(), с целыми значениями, определенными для этих имен операционной системой хоста. Это может использоваться для определения набора имен, известных системе.

Availability: Unix.

Изменено в версии 3.11: Добавьте 'SC_MINSIGSTKSZ' имя.

Для поддержки операций манипулирования путями используются следующие значения данных. Они определены для всех платформ.

Операции более высокого уровня с путевыми именами определены в модуле os.path.

os.curdir

Постоянная строка, используемая операционной системой для ссылки на текущий каталог. Это '.' для Windows и POSIX. Также доступно через os.path.

os.pardir

Постоянная строка, используемая операционной системой для ссылки на родительский каталог. Это '..' для Windows и POSIX. Также доступно через os.path.

os.sep

Символ, используемый операционной системой для разделения путей к компонентам. Это '/' для POSIX и '\\' для Windows. Обратите внимание, что знания этого недостаточно для разбора или объединения имен путей - используйте os.path.split() и os.path.join() — но иногда это бывает полезно. Также доступно через os.path.

os.altsep

Альтернативный символ, используемый операционной системой для разделения компонентов имени пути, или None, если существует только один разделительный символ. В системах Windows этот символ имеет значение '/', где sep - обратная косая черта. Также доступно через os.path.

os.extsep

Символ, который отделяет базовое имя файла от расширения; например, '.' в os.py. Также доступен через os.path.

os.pathsep

Символ, обычно используемый операционной системой для разделения компонентов пути поиска (например, PATH), например, ':' для POSIX или ';' для Windows. Также доступен через os.path.

os.defpath

Путь поиска по умолчанию, используемый exec*p* и spawn*p*, если в среде нет ключа 'PATH'. Также доступен через os.path.

os.linesep

Строка, используемая для разделения (или, скорее, завершения) строк на текущей платформе. Это может быть один символ, такой как '\n' для POSIX, или несколько символов, например, '\r\n' для Windows. Не используйте os.linesep в качестве символа окончания строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте один '\n' на всех платформах.

os.devnull

Путь к файлу нулевого устройства. Например: '/dev/null' для POSIX, 'nul' для Windows. Также доступно через os.path.

os.RTLD_LAZY
os.RTLD_NOW
os.RTLD_GLOBAL
os.RTLD_LOCAL
os.RTLD_NODELETE
os.RTLD_NOLOAD
os.RTLD_DEEPBIND

Флаги для использования с функциями setdlopenflags() и getdlopenflags(). Что означают различные флаги, смотрите на странице руководства по Unix dlopen(3).

Добавлено в версии 3.3.

Случайные числа

os.getrandom(size, flags=0)

Увеличьте размер до * случайных байт. Функция может возвращать меньше байт, чем запрошено.

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

getrandom() зависит от энтропии, получаемой из драйверов устройств и других источников шума окружающей среды. Ненужное считывание больших объемов данных негативно скажется на других пользователях устройств /dev/random и /dev/urandom.

Аргумент flags - это битовая маска, которая может содержать ноль или более из следующих значений, указанных вместе: os.GRND_RANDOM и GRND_NONBLOCK.

Смотрите также Linux getrandom() manual page.

Availability: Linux >= 3.17.

Добавлено в версии 3.6.

os.urandom(size, /)

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

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

В Linux, если доступен системный вызов getrandom(), он используется в режиме блокировки: блокируется до тех пор, пока не будет инициализирован системный пул случайной энтропии (ядро собирает 128 бит энтропии). Логическое обоснование приведено в PEP 524. В Linux функция getrandom() может использоваться для получения случайных байт в неблокирующем режиме (с использованием флага GRND_NONBLOCK) или для опроса до тех пор, пока не будет инициализирован системный пул энтропии urandom.

В Unix-подобной системе случайные байты считываются с устройства /dev/urandom. Если устройство /dev/urandom недоступно или недоступно для чтения, возникает исключение NotImplementedError.

В Windows он будет использовать BCryptGenRandom().

См.также

Модуль secrets предоставляет функции более высокого уровня. Простой в использовании интерфейс генератора случайных чисел, предоставляемый вашей платформой, смотрите в разделе random.SystemRandom.

Изменено в версии 3.5: В Linux 3.17 и более поздних версиях теперь используется системный вызов getrandom(), когда он доступен. В OpenBSD 5.6 и более поздних версиях теперь используется функция C getentropy(). Эти функции позволяют избежать использования внутреннего файлового дескриптора.

Изменено в версии 3.5.2: В Linux, если системный вызов getrandom() блокируется (пул энтропии urandom еще не инициализирован), вернитесь к чтению /dev/urandom.

Изменено в версии 3.6: В Linux getrandom() теперь используется в режиме блокировки для повышения безопасности.

Изменено в версии 3.11: В Windows BCryptGenRandom() используется вместо CryptGenRandom(), который является устаревшим.

os.GRND_NONBLOCK

По умолчанию при чтении из /dev/random, getrandom() блокируется, если нет доступных случайных байт, а при чтении из /dev/urandom блокируется, если пул энтропии еще не был инициализирован.

Если установлен флаг GRND_NONBLOCK, то getrandom() в этих случаях не блокируется, а вместо этого немедленно повышается BlockingIOError.

Добавлено в версии 3.6.

os.GRND_RANDOM

Если этот бит установлен, то случайные байты извлекаются из пула /dev/random вместо пула /dev/urandom.

Добавлено в версии 3.6.

Вернуться на верх