Документация Python неофициальный перевод

os.md

4444 строк · 396.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.16/library/os.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `os` – Различные интерфейсы операционной системы89**Исходный код:** [Lib/os.py](https://python-all.ru/src/main/Lib/os.py)1011---1213Этот модуль предоставляет переносимый способ использования функций, зависящих от операционной системы. Если нужно просто прочитать или записать файл, см. [`open()`](https://python-all.ru/3.16/library/functions.html#open); для работы с путями используйте модуль [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path); для чтения всех строк из всех файлов в командной строке – модуль [`fileinput`](https://python-all.ru/3.16/library/fileinput.html#module-fileinput). Для создания временных файлов и каталогов обратитесь к модулю [`tempfile`](https://python-all.ru/3.16/library/tempfile.html#module-tempfile), а для высокоуровневой работы с файлами и каталогами – к модулю [`shutil`](https://python-all.ru/3.16/library/shutil.html#module-shutil).1415Примечания о доступности этих функций:1617- Все встроенные модули Python, зависящие от операционной системы, устроены так, что при наличии одинаковой функциональности они используют один и тот же интерфейс; например, функция `os.stat(path)` возвращает информацию stat о *пути* в одном и том же формате (который, как вышло, берёт начало от интерфейса POSIX).18- Расширения, характерные для конкретной операционной системы, также доступны через модуль `os`, но их использование, конечно, угрожает переносимости.19- Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.20- На VxWorks os.popen, os.fork, os.execv и os.spawn\*p\* не поддерживаются.21- На платформах WebAssembly, Android и iOS большая часть модуля `os` недоступна или ведёт себя иначе. API, связанные с процессами (например, [`fork()`](https://python-all.ru/3.16/library/os.html#os.fork), [`execve()`](https://python-all.ru/3.16/library/os.html#os.execve)) и ресурсами (например, [`nice()`](https://python-all.ru/3.16/library/os.html#os.nice)), недоступны. Другие, такие как [`getuid()`](https://python-all.ru/3.16/library/os.html#os.getuid) и [`getpid()`](https://python-all.ru/3.16/library/os.html#os.getpid), эмулируются или являются заглушками. На платформах WebAssembly также отсутствует поддержка сигналов (например, [`kill()`](https://python-all.ru/3.16/library/os.html#os.kill), [`wait()`](https://python-all.ru/3.16/library/os.html#os.wait)).2223> **Примечание**24>25> Все функции в этом модуле возбуждают [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) (или его подклассы) в случае недопустимых или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.2627#### `exception os.error`2829Псевдоним для встроенного исключения [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError).3031#### `os.name`3233Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: `'posix'`, `'nt'`, `'java'`.3435> **См. также**36>37> [`sys.platform`](https://python-all.ru/3.16/library/sys.html#sys.platform) имеет более мелкую гранулярность. [`os.uname()`](https://python-all.ru/3.16/library/os.html#os.uname) предоставляет системно-зависимую информацию о версии.38>39> Модуль [`platform`](https://python-all.ru/3.16/library/platform.html#module-platform) предоставляет подробные проверки идентификации системы.4041## Имена файлов, аргументы командной строки и переменные окружения4243В Python имена файлов, аргументы командной строки и переменные окружения представлены строковым типом. В некоторых системах перед передачей их операционной системе необходимо декодировать эти строки в байты и обратно. Python использует [кодировку файловой системы и обработчик ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler) для выполнения этого преобразования (см. [`sys.getfilesystemencoding()`](https://python-all.ru/3.16/library/sys.html#sys.getfilesystemencoding)).4445[Кодировка файловой системы и обработчик ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler) настраиваются при запуске Python функцией [`PyConfig_Read()`](https://python-all.ru/3.16/c-api/init_config.html#c.PyConfig_Read): см. члены [`filesystem_encoding`](https://python-all.ru/3.16/c-api/init_config.html#c.PyConfig.filesystem_encoding) и [`filesystem_errors`](https://python-all.ru/3.16/c-api/init_config.html#c.PyConfig.filesystem_errors) объекта [`PyConfig`](https://python-all.ru/3.16/c-api/init_config.html#c.PyConfig).4647Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться неудачей. В этом случае Python использует [обработчик ошибок кодирования surrogateescape](https://python-all.ru/3.16/library/codecs.html#surrogateescape), что означает, что недекодируемые байты заменяются символом Unicode U+DC*xx* при декодировании, и при кодировании они снова преобразуются в исходный байт.4849[Кодировка файловой системы](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler) должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может предоставить такую гарантию, функции API могут возбуждать [`UnicodeError`](https://python-all.ru/3.16/library/exceptions.html#UnicodeError).5051См. также [кодировку локали](https://python-all.ru/3.16/glossary.html#term-locale-encoding).5253## Режим UTF-8 в Python5455Добавлено в версии 3.7: Подробнее см. [**PEP 540**](https://python-all.ru/3.16/library/os.html).5657Изменено в версии 3.15: Режим Python UTF-8 теперь включён по умолчанию ([**PEP 686**](https://python-all.ru/3.16/library/os.html)). Его можно отключить, установив [`PYTHONUTF8=0`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUTF8) как переменную окружения или с помощью параметра командной строки [`-X utf8=0`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X).5859Режим UTF-8 в Python игнорирует [кодировку локали](https://python-all.ru/3.16/glossary.html#term-locale-encoding) и принудительно использует кодировку UTF-8:6061- Использовать UTF-8 в качестве [кодировки файловой системы](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler).62- [`sys.getfilesystemencoding()`](https://python-all.ru/3.16/library/sys.html#sys.getfilesystemencoding) возвращает `'utf-8'`.63- [`locale.getpreferredencoding()`](https://python-all.ru/3.16/library/locale.html#locale.getpreferredencoding) возвращает `'utf-8'` (аргумент *do\_setlocale* не имеет эффекта).64- [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin), [`sys.stdout`](https://python-all.ru/3.16/library/sys.html#sys.stdout) и [`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr) все используют UTF-8 в качестве текстовой кодировки, при этом `surrogateescape` [обработчик ошибок](https://python-all.ru/3.16/library/codecs.html#error-handlers) включён для `sys.stdin` и `sys.stdout` (`sys.stderr` продолжает использовать `backslashreplace`, как и в режиме по умолчанию с учётом локали)65- В Unix [`os.device_encoding()`](https://python-all.ru/3.16/library/os.html#os.device_encoding) возвращает `'utf-8'` вместо кодировки устройства.6667Обратите внимание: настройки стандартных потоков в режиме UTF-8 могут быть переопределены с помощью [`PYTHONIOENCODING`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONIOENCODING) (как и в режиме по умолчанию с учётом локали).6869Вследствие изменений в этих низкоуровневых API другие высокоуровневые API также демонстрируют другое поведение по умолчанию:7071- Аргументы командной строки, переменные окружения и имена файлов декодируются в текст с использованием кодировки UTF-8.72- [`os.fsdecode()`](https://python-all.ru/3.16/library/os.html#os.fsdecode) и [`os.fsencode()`](https://python-all.ru/3.16/library/os.html#os.fsencode) используют кодировку UTF-8.73- [`open()`](https://python-all.ru/3.16/library/functions.html#open), [`io.open()`](https://python-all.ru/3.16/library/io.html#io.open) и [`codecs.open()`](https://python-all.ru/3.16/library/codecs.html#codecs.open) по умолчанию используют кодировку UTF-8. Однако по умолчанию они также используют строгий обработчик ошибок, так что попытка открыть двоичный файл в текстовом режиме, скорее всего, вызовет исключение, а не вернёт бессмысленные данные.7475[Режим Python UTF-8](https://python-all.ru/3.16/library/os.html#utf8-mode) включён по умолчанию. Его можно отключить с помощью параметра командной строки [`-X utf8=0`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) или переменной окружения [`PYTHONUTF8=0`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONUTF8). Режим Python UTF-8 можно отключить только при запуске Python. Его значение можно узнать из [`sys.flags.utf8_mode`](https://python-all.ru/3.16/library/sys.html#sys.flags).7677Если режим UTF-8 отключён, интерпретатор по умолчанию использует текущие настройки локали, *если только* текущая локаль не определена как устаревшая ASCII-локаль (как описано для [`PYTHONCOERCECLOCALE`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHONCOERCECLOCALE)), и принудительное изменение локали отключено или не удаётся. В таких устаревших локалях интерпретатор по умолчанию включит режим UTF-8, если явно не указано иное.7879См. также [режим UTF-8 в Windows](https://python-all.ru/3.16/using/windows.html#win-utf8-mode) и [кодировку файловой системы и обработчик ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler).8081## Параметры процесса8283Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.8485#### `os.ctermid()`8687Возвращает имя файла, соответствующее управляющему терминалу процесса.8889[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.9091#### `os.environ`9293Объект [отображения](https://python-all.ru/3.16/glossary.html#term-mapping), ключи и значения которого являются строками, представляющими окружение процесса. Например, `environ['HOME']` – это путь к вашему домашнему каталогу (на некоторых платформах), что эквивалентно `getenv("HOME")` в C.9495Это отображение захватывается при первом импорте модуля `os`, обычно во время запуска Python при обработке `site.py`. Изменения окружения, сделанные после этого момента, не отражаются в `os.environ`, за исключением изменений, выполненных путём прямого изменения `os.environ`.9697Это отображение можно использовать как для запроса окружения, так и для его изменения. [`putenv()`](https://python-all.ru/3.16/library/os.html#os.putenv) будет вызываться автоматически при изменении отображения.9899В Unix ключи и значения используют [`sys.getfilesystemencoding()`](https://python-all.ru/3.16/library/sys.html#sys.getfilesystemencoding) и обработчик ошибок `'surrogateescape'`. Используйте [`environb`](https://python-all.ru/3.16/library/os.html#os.environb), если требуется другая кодировка.100101В Windows ключи преобразуются в верхний регистр. Это также относится к получению, установке или удалению элемента. Например, `environ['monty'] = 'python'` сопоставляет ключ `'MONTY'` со значением `'python'`.102103> **Примечание**104>105> Вызов [`putenv()`](https://python-all.ru/3.16/library/os.html#os.putenv) напрямую не изменяет `os.environ`, поэтому лучше изменять `os.environ`.106107> **Примечание**108>109> На некоторых платформах, включая FreeBSD и macOS, установка `environ` может приводить к утечкам памяти. Обратитесь к системной документации по `putenv()`.110111Можно удалять элементы из этого отображения, чтобы сбросить переменные окружения. [`unsetenv()`](https://python-all.ru/3.16/library/os.html#os.unsetenv) будет автоматически вызван при удалении элемента из `os.environ`, а также при вызове одного из методов [`pop()`](https://python-all.ru/3.16/library/stdtypes.html#dict.pop) или [`clear()`](https://python-all.ru/3.16/library/stdtypes.html#dict.clear).112113Если функция *[clearenv(3)](https://python-all.ru/3.16/library/os.html)* доступна, метод [`clear()`](https://python-all.ru/3.16/library/stdtypes.html#dict.clear) использует её и генерирует одно аудит-событие `os._clearenv`. В противном случае генерируется событие `os.unsetenv` для каждой удалённой переменной.114115Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.unsetenv` с аргументом `key`.116117Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os._clearenv` без аргументов.118119> **См. также**120>121> Функция [`os.reload_environ()`](https://python-all.ru/3.16/library/os.html#os.reload_environ).122123Изменено в версии 3.9: Обновлено для поддержки операторов объединения (`|`) и обновления (`|=`) из [**PEP 584**](https://python-all.ru/3.16/library/os.html).124125Изменено в версии 3.15: Метод [`clear()`](https://python-all.ru/3.16/library/stdtypes.html#dict.clear) теперь может генерировать аудит-событие `os._clearenv`.126127#### `os.environb`128129Байтовая версия [`environ`](https://python-all.ru/3.16/library/os.html#os.environ): объект [отображения](https://python-all.ru/3.16/glossary.html#term-mapping), где и ключи, и значения являются объектами [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), представляющими окружение процесса. `environ` и `environb` синхронизированы (изменение `environb` обновляет `environ`, и наоборот).130131`environb` доступен только в том случае, если [`supports_bytes_environ`](https://python-all.ru/3.16/library/os.html#os.supports_bytes_environ) равен `True`.132133Добавлено в версии 3.2.134135Изменено в версии 3.9: Обновлено для поддержки операторов объединения (`|`) и обновления (`|=`) из [**PEP 584**](https://python-all.ru/3.16/library/os.html).136137#### `os.reload_environ()`138139Отображения [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ) и [`os.environb`](https://python-all.ru/3.16/library/os.html#os.environb) являются кешем переменных окружения на момент запуска Python. Поэтому изменения окружения текущего процесса не отражаются, если они были сделаны вне Python или с помощью [`os.putenv()`](https://python-all.ru/3.16/library/os.html#os.putenv) или [`os.unsetenv()`](https://python-all.ru/3.16/library/os.html#os.unsetenv). Используйте `os.reload_environ()` для обновления `os.environ` и `os.environb` такими изменениями в окружении текущего процесса.140141> **Предупреждение**142>143> Эта функция не является потокобезопасной. Вызов её во время изменения окружения в другом потоке приводит к неопределённому поведению. Чтение [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ) или [`os.environb`](https://python-all.ru/3.16/library/os.html#os.environb), или вызов [`os.getenv()`](https://python-all.ru/3.16/library/os.html#os.getenv) во время перезагрузки может вернуть пустой результат.144145Добавлено в версии 3.14.146147#### `os.chdir(path)`148149#### `os.fchdir(fd)`150151#### `os.getcwd()`152153Эти функции описаны в [Files and Directories](https://python-all.ru/3.16/library/os.html#os-file-dir).154155#### `os.fsencode(filename)`156157Кодирует [path-like](https://python-all.ru/3.16/glossary.html#term-path-like-object) *имя файла* в [кодировку файловой системы и обработчик ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler); возвращает [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) без изменений.158159[`fsdecode()`](https://python-all.ru/3.16/library/os.html#os.fsdecode) – обратная функция.160161Добавлено в версии 3.2.162163Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс [`os.PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike) .164165#### `os.fsdecode(filename)`166167Декодирует [path-like](https://python-all.ru/3.16/glossary.html#term-path-like-object) *имя файла* из [кодировки файловой системы и обработчика ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler); возвращает [`str`](https://python-all.ru/3.16/library/stdtypes.html#str) без изменений.168169[`fsencode()`](https://python-all.ru/3.16/library/os.html#os.fsencode) – обратная функция.170171Добавлено в версии 3.2.172173Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс [`os.PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike) .174175#### `os.fspath(path)`176177Возвращает представление пути в файловой системе.178179Если переданы [`str`](https://python-all.ru/3.16/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), они возвращаются без изменений. В противном случае вызывается [`__fspath__()`](https://python-all.ru/3.16/library/os.html#os.PathLike.__fspath__), и её значение возвращается, если оно является объектом `str` или `bytes`. Во всех остальных случаях вызывается [`TypeError`](https://python-all.ru/3.16/library/exceptions.html#TypeError).180181Добавлено в версии 3.6.182183#### `class os.PathLike`184185[Абстрактный базовый класс](https://python-all.ru/3.16/glossary.html#term-abstract-base-class) для объектов, представляющих путь в файловой системе, например, [`pathlib.PurePath`](https://python-all.ru/3.16/library/pathlib.html#pathlib.PurePath).186187Добавлено в версии 3.6.188189#### `abstractmethod __fspath__()`190191Возвращает представление пути в файловой системе для объекта.192193Метод должен возвращать только объект [`str`](https://python-all.ru/3.16/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes), с предпочтением `str`.194195#### `os.getenv(key, default=None)`196197Возвращает значение переменной окружения *key* в виде строки, если она существует, или *default* в противном случае. *key* – строка. Обратите внимание, что поскольку `getenv()` использует [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ), отображение `getenv()` также фиксируется при импорте, и функция может не отражать будущие изменения окружения.198199В Unix ключи и значения декодируются с помощью [`sys.getfilesystemencoding()`](https://python-all.ru/3.16/library/sys.html#sys.getfilesystemencoding) и обработчика ошибок `'surrogateescape'`. Используйте [`os.getenvb()`](https://python-all.ru/3.16/library/os.html#os.getenvb), если tребуется другая кодировка.200201[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.202203#### `os.getenvb(key, default=None)`204205Возвращает значение переменной окружения *key* в виде байтов, если она существует, или *default* в противном случае. *key* должен быть байтами. Обратите внимание, что поскольку `getenvb()` использует [`os.environb`](https://python-all.ru/3.16/library/os.html#os.environb), отображение `getenvb()` также фиксируется при импорте, и функция может не отражать будущие изменения окружения.206207`getenvb()` доступна только если [`supports_bytes_environ`](https://python-all.ru/3.16/library/os.html#os.supports_bytes_environ) равен `True`.208209[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.210211Добавлено в версии 3.2.212213#### `os.get_exec_path(env=None)`214215Возвращает список каталогов, в которых будет выполняться поиск указанного исполняемого файла, аналогично оболочке, при запуске процесса. *env*, если указан, должен быть словарём переменных окружения, в котором искать PATH. По умолчанию, когда *env* равен `None`, используется [`environ`](https://python-all.ru/3.16/library/os.html#os.environ).216217Добавлено в версии 3.2.218219#### `os.getegid()`220221Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.222223[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.224225#### `os.geteuid()`226227Возвращает эффективный идентификатор пользователя текущего процесса.228229[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.230231#### `os.getgid()`232233Возвращает реальный идентификатор группы текущего процесса.234235[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.236237Функция является заглушкой на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.238239#### `os.getgrouplist(user, group, /)`240241Возвращает список идентификаторов групп, к которым принадлежит пользователь *user*. Если *group* нет в списке, он добавляется; обычно *group* задаётся как поле идентификатора группы из записи пароля для *user*, потому что иначе этот идентификатор группы может быть пропущен.242243[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.244245Добавлено в версии 3.3.246247#### `os.getgroups()`248249Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.250251[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.252253> **Примечание**254>255> На macOS поведение `getgroups()` несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания `10.5` или более ранней, `getgroups()` возвращает список эффективных идентификаторов групп, связанных с текущим процессом пользователя; этот список ограничен системным количеством записей, обычно 16, и может быть изменён вызовами [`setgroups()`](https://python-all.ru/3.16/library/os.html#os.setgroups) при наличии соответствующих привилегий. Если сборка выполнена с целевой версией развёртывания больше `10.5`, `getgroups()` возвращает текущий список групп доступа для пользователя, связанного с эффективным идентификатором пользователя процесса; список групп доступа может меняться в течение времени жизни процесса, на него не влияют вызовы `setgroups()`, и его длина не ограничена 16. Значение целевой версии развёртывания можно получить с помощью [`sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET')`](https://python-all.ru/3.16/library/sysconfig.html#sysconfig.get_config_var).256257#### `os.getlogin()`258259Return the name of the user logged in on the controlling terminal of the process. For most purposes, it is more useful to use [`getpass.getuser()`](https://python-all.ru/3.16/library/getpass.html#getpass.getuser) since the latter checks the environment variables `LOGNAME` or `USERNAME` to find out who the user is, and falls back to `pwd.getpwuid(os.getuid())[0]` to get the login name of the current real user id.260261[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI.262263#### `os.getpgid(pid)`264265Возвращает идентификатор группы процессов для процесса с идентификатором *pid*. Если *pid* равен 0, возвращается идентификатор группы текущего процесса.266267[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.268269#### `os.getpgrp()`270271Возвращает идентификатор текущей группы процессов.272273[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.274275#### `os.getpid()`276277Возвращает идентификатор текущего процесса.278279Функция является заглушкой на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.280281#### `os.getppid()`282283Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), а в Windows – тот же самый идентификатор, который к тому моменту может быть уже занят другим процессом.284285[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI.286287Изменено в версии 3.2: Добавлена поддержка Windows.288289#### `os.getpriority(which, who)`290291Получает приоритет планирования программы. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.16/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.16/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.16/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для `PRIO_PROCESS`, идентификатор группы процессов для `PRIO_PGRP` и идентификатор пользователя для `PRIO_USER`). Нулевое значение *who* обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.292293[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.294295Добавлено в версии 3.3.296297#### `os.PRIO_PROCESS`298299#### `os.PRIO_PGRP`300301#### `os.PRIO_USER`302303Параметры для функций [`getpriority()`](https://python-all.ru/3.16/library/os.html#os.getpriority) и [`setpriority()`](https://python-all.ru/3.16/library/os.html#os.setpriority).304305[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.306307Добавлено в версии 3.3.308309#### `os.PRIO_DARWIN_THREAD`310311#### `os.PRIO_DARWIN_PROCESS`312313#### `os.PRIO_DARWIN_BG`314315#### `os.PRIO_DARWIN_NONUI`316317Параметры для функций [`getpriority()`](https://python-all.ru/3.16/library/os.html#os.getpriority) и [`setpriority()`](https://python-all.ru/3.16/library/os.html#os.setpriority).318319[Доступность](https://python-all.ru/3.16/library/intro.html#availability): macOS320321Добавлено в версии 3.12.322323#### `os.getresuid()`324325Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.326327[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не macOS, не iOS.328329Добавлено в версии 3.2.330331#### `os.getresgid()`332333Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.334335[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не macOS, не iOS.336337Добавлено в версии 3.2.338339#### `os.getuid()`340341Возвращает реальный идентификатор пользователя текущего процесса.342343[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.344345Функция является заглушкой на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.346347#### `os.initgroups(username, gid, /)`348349Вызывает системную функцию `initgroups()` для инициализации списка доступа к группам, включающего все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.350351[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.352353Добавлено в версии 3.2.354355#### `os.putenv(key, value, /)`356357Устанавливает переменную окружения с именем *key* в строку *value*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.16/library/os.html#os.system), [`popen()`](https://python-all.ru/3.16/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.16/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.16/library/os.html#os.execv).358359Присваивания элементам [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ) автоматически преобразуются в соответствующие вызовы `putenv()`; однако вызовы `putenv()` не обновляют `os.environ`, поэтому на практике предпочтительнее присваивать значения элементам `os.environ`. Это также относится к [`getenv()`](https://python-all.ru/3.16/library/os.html#os.getenv) и [`getenvb()`](https://python-all.ru/3.16/library/os.html#os.getenvb), которые в своей реализации используют `os.environ` и [`os.environb`](https://python-all.ru/3.16/library/os.html#os.environb) соответственно.360361См. также функцию [`os.reload_environ()`](https://python-all.ru/3.16/library/os.html#os.reload_environ).362363> **Примечание**364>365> На некоторых платформах, включая FreeBSD и macOS, установка `environ` может вызывать утечки памяти. Обратитесь к системной документации по `putenv()`.366367Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.putenv` с аргументами `key`, `value`.368369Изменено в версии 3.9: Теперь функция всегда доступна.370371#### `os.setegid(egid, /)`372373Устанавливает эффективный идентификатор группы текущего процесса.374375[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.376377#### `os.seteuid(euid, /)`378379Устанавливает эффективный идентификатор пользователя текущего процесса.380381[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.382383#### `os.setgid(gid, /)`384385Устанавливает идентификатор группы текущего процесса.386387[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.388389#### `os.setgroups(groups, /)`390391Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в *groups*. *groups* должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.392393[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.394395> **Примечание**396>397> В macOS длина *groups* не может превышать определённое системой максимальное количество эффективных идентификаторов групп, обычно 16. См. документацию по [`getgroups()`](https://python-all.ru/3.16/library/os.html#os.getgroups) для случаев, когда может возвращаться не тот же список групп, который был установлен вызовом setgroups().398399#### `os.setns(fd, nstype=0)`400401Перепривязывает текущий поток к пространству имён Linux. См. страницы руководства *[setns(2)](https://python-all.ru/3.16/library/os.html)* и *[namespaces(7)](https://python-all.ru/3.16/library/os.html)* для получения дополнительных сведений.402403Если *fd* ссылается на символическую ссылку `/proc/pid/ns/`, `setns()` перепривязывает вызывающий поток к пространству имён, связанному с этой ссылкой, а *nstype* может быть установлен в одну из констант [CLONE\_NEW\*](https://python-all.ru/3.16/library/os.html#os-unshare-clone-flags), чтобы наложить ограничения на операцию (`0` означает отсутствие ограничений).404405Начиная с Linux 5.8, *fd* может ссылаться на файловый дескриптор PID, полученный из [`pidfd_open()`](https://python-all.ru/3.16/library/os.html#os.pidfd_open). В этом случае `setns()` перепривязывает вызывающий поток к одному или нескольким тем же пространствам имён, что и поток, на который ссылается *fd*. Это подчиняется любым ограничениям, накладываемым *nstype*, который представляет собой битовую маску, объединяющую одну или несколько [констант CLONE\_NEW\*](https://python-all.ru/3.16/library/os.html#os-unshare-clone-flags), например `setns(fd, os.CLONE_NEWUTS | os.CLONE_NEWPID)`. Членство вызывающей стороны в неуказанных пространствах имён остаётся без изменений.406407*fd* может быть любым объектом с методом [`fileno()`](https://python-all.ru/3.16/library/io.html#io.IOBase.fileno) или необработанным файловым дескриптором.408409В этом примере поток перепривязывается к сетевому пространству имён процесса `init`:410411```python412fd = os.open("/proc/1/ns/net", os.O_RDONLY)413os.setns(fd, os.CLONE_NEWNET)414os.close(fd)415```416417[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 3.0 с glibc \>= 2.14.418419Добавлено в версии 3.12.420421> **См. также**422>423> Функция [`unshare()`](https://python-all.ru/3.16/library/os.html#os.unshare).424425#### `os.setpgrp()`426427Вызывает системный вызов `setpgrp()` или `setpgrp(0, 0)` в зависимости от того, какая версия реализована (если таковая имеется). За семантикой обращайтесь к руководству Unix.428429[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.430431#### `os.setpgid(pid, pgrp, /)`432433Вызывает системный вызов `setpgid()`, чтобы установить идентификатор группы процессов процесса с идентификатором *pid* равным группе процессов с идентификатором *pgrp*. За семантикой обращайтесь к руководству Unix.434435[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.436437#### `os.setpriority(which, who, priority)`438439Устанавливает приоритет планирования программы. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.16/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.16/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.16/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для `PRIO_PROCESS`, идентификатор группы процессов для `PRIO_PGRP` и идентификатор пользователя для `PRIO_USER`). Нулевое значение для *who* обозначает (соответственно): вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. *priority* – значение в диапазоне от -20 до 19. Приоритет по умолчанию – 0; меньшие значения приоритета приводят к более благоприятному планированию.440441[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.442443Добавлено в версии 3.3.444445#### `os.setregid(rgid, egid, /)`446447Устанавливает реальный и эффективный идентификаторы группы текущего процесса.448449[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.450451#### `os.setresgid(rgid, egid, sgid, /)`452453Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.454455[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не macOS, не iOS.456457Добавлено в версии 3.2.458459#### `os.setresuid(ruid, euid, suid, /)`460461Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.462463[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не macOS, не iOS.464465Добавлено в версии 3.2.466467#### `os.setreuid(ruid, euid, /)`468469Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.470471[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.472473#### `os.getsid(pid, /)`474475Вызывает системный вызов `getsid()`. За семантикой обращайтесь к руководству Unix.476477[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.478479#### `os.setsid()`480481Вызывает системный вызов `setsid()`. За семантикой обращайтесь к руководству Unix.482483[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.484485#### `os.setuid(uid, /)`486487Устанавливает идентификатор пользователя текущего процесса.488489[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.490491#### `os.strerror(code, /)`492493Возвращает сообщение об ошибке, соответствующее коду ошибки в *code*. На платформах, где `strerror()` возвращает `NULL` при неизвестном номере ошибки, возбуждается [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError).494495#### `os.supports_bytes_environ`496497`True` если нативный тип ОС окружения – bytes (например, `False` на Windows).498499Добавлено в версии 3.2.500501#### `os.umask(mask, /)`502503Устанавливает текущую числовую umask и возвращает предыдущую umask.504505Функция является заглушкой на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.506507#### `os.uname()`508509Возвращает сведения, идентифицирующие текущую операционную систему. Возвращаемое значение – [`uname_result`](https://python-all.ru/3.16/library/os.html#os.uname_result).510511На macOS, iOS и Android эта функция возвращает имя и версию *ядра* (т.е. `'Darwin'` на macOS и iOS; `'Linux'` на Android). [`platform.uname()`](https://python-all.ru/3.16/library/platform.html#platform.uname) можно использовать для получения отображаемого пользователю имени и версии операционной системы на iOS и Android.512513> **См. также**514>515> [`sys.platform`](https://python-all.ru/3.16/library/sys.html#sys.platform), который имеет более высокую детализацию.516>517> Модуль [`platform`](https://python-all.ru/3.16/library/platform.html#module-platform) предоставляет подробные проверки идентификации системы.518519[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.520521Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.522523#### `class os.uname_result`524525Имя и сведения о системе, возвращаемые [`os.uname()`](https://python-all.ru/3.16/library/os.html#os.uname). Эти атрибуты соответствуют полям, описанным в *[uname(2)](https://python-all.ru/3.16/library/os.html)*.526527Для обратной совместимости этот объект также является итерируемым, ведя себя как пятиэлементный кортеж, содержащий [`sysname`](https://python-all.ru/3.16/library/os.html#os.uname_result.sysname), [`nodename`](https://python-all.ru/3.16/library/os.html#os.uname_result.nodename), [`release`](https://python-all.ru/3.16/library/os.html#os.uname_result.release), [`version`](https://python-all.ru/3.16/library/os.html#os.uname_result.version) и [`machine`](https://python-all.ru/3.16/library/os.html#os.uname_result.machine) в указанном порядке.528529#### `sysname`530531Имя операционной системы.532533#### `nodename`534535Имя машины в сети. Некоторые системы усекают `nodename` до 8 символов или до ведущего компонента; лучший способ получить имя хоста – [`socket.gethostname()`](https://python-all.ru/3.16/library/socket.html#socket.gethostname) или даже `socket.gethostbyaddr(socket.gethostname())`.536537#### `release`538539Релиз операционной системы.540541#### `version`542543Версия операционной системы.544545#### `machine`546547Идентификатор оборудования.548549#### `os.unsetenv(key, /)`550551Удаляет (сбрасывает) переменную окружения с именем *key*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.16/library/os.html#os.system), [`popen()`](https://python-all.ru/3.16/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.16/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.16/library/os.html#os.execv).552553Удаление элементов из [`os.environ`](https://python-all.ru/3.16/library/os.html#os.environ) автоматически преобразуется в соответствующий вызов `unsetenv()`; однако вызовы `unsetenv()` не обновляют `os.environ`, поэтому на самом деле предпочтительнее удалять элементы из `os.environ`.554555См. также функцию [`os.reload_environ()`](https://python-all.ru/3.16/library/os.html#os.reload_environ).556557Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.unsetenv` с аргументом `key`.558559Изменено в версии 3.9: Функция теперь всегда доступна, а также доступна на Windows.560561#### `os.unshare(flags)`562563Отделяет части контекста выполнения процесса и перемещает их в новое пространство имён. См. страницу руководства *[unshare(2)](https://python-all.ru/3.16/library/os.html)* для получения более подробной информации. Аргумент *flags* представляет собой битовую маску, объединяющую ноль или более [констант CLONE\_\*](https://python-all.ru/3.16/library/os.html#os-unshare-clone-flags), которая определяет, какие части контекста выполнения должны быть отделены от существующих связей и перемещены в новое пространство имён. Если аргумент *flags* равен `0`, никаких изменений в контекст выполнения вызывающего процесса не вносится.564565[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.16.566567Добавлено в версии 3.12.568569> **См. также**570>571> Функция [`setns()`](https://python-all.ru/3.16/library/os.html#os.setns).572573Флаги для функции [`unshare()`](https://python-all.ru/3.16/library/os.html#os.unshare), если реализация их поддерживает. См. *[unshare(2)](https://python-all.ru/3.16/library/os.html)* в руководстве Linux для получения информации об их точном эффекте и доступности.574575#### `os.CLONE_FILES`576577#### `os.CLONE_FS`578579#### `os.CLONE_NEWCGROUP`580581#### `os.CLONE_NEWIPC`582583#### `os.CLONE_NEWNET`584585#### `os.CLONE_NEWNS`586587#### `os.CLONE_NEWPID`588589#### `os.CLONE_NEWTIME`590591#### `os.CLONE_NEWUSER`592593#### `os.CLONE_NEWUTS`594595#### `os.CLONE_SIGHAND`596597#### `os.CLONE_SYSVSEM`598599#### `os.CLONE_THREAD`600601#### `os.CLONE_VM`602603## Создание файловых объектов604605Эти функции создают новые [файловые объекты](https://python-all.ru/3.16/glossary.html#term-file-object). (См. также [`open()`](https://python-all.ru/3.16/library/os.html#os.open) для открытия файловых дескрипторов.)606607#### `os.fdopen(fd, *args, **kwargs)`608609Возвращает открытый файловый объект, подключённый к файловому дескриптору *fd*. Это псевдоним встроенной функции [`open()`](https://python-all.ru/3.16/library/functions.html#open) и принимает те же аргументы. Единственное отличие в том, что первый аргумент `fdopen()` всегда должен быть целым числом.610611## Операции с файловыми дескрипторами612613Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.614615Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.616617Метод [`fileno()`](https://python-all.ru/3.16/library/io.html#io.IOBase.fileno) можно использовать для получения файлового дескриптора, связанного с [файловым объектом](https://python-all.ru/3.16/glossary.html#term-file-object) при необходимости. Обратите внимание, что прямое использование файлового дескриптора обходит методы файлового объекта, игнорируя такие аспекты, как внутренняя буферизация данных.618619#### `os.close(fd)`620621Закрывает файловый дескриптор *fd*.622623> **Примечание**624>625> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.16/library/os.html#os.pipe). Чтобы закрыть «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.16/library/functions.html#open) или [`popen()`](https://python-all.ru/3.16/library/os.html#os.popen) или [`fdopen()`](https://python-all.ru/3.16/library/os.html#os.fdopen), используйте его метод [`close()`](https://python-all.ru/3.16/library/io.html#io.IOBase.close).626627#### `os.closerange(fd_low, fd_high, /)`628629Закрывает все файловые дескрипторы от *fd\_low* (включительно) до *fd\_high* (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):630631```python632for fd in range(fd_low, fd_high):633    try:634        os.close(fd)635    except OSError:636        pass637```638639#### `os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)`640641Копирует *count* байт из файлового дескриптора *src*, начиная со смещения *offset\_src*, в файловый дескриптор *dst*, начиная со смещения *offset\_dst*. Если *offset\_src* равно `None`, то *src* читается с текущей позиции; аналогично для *offset\_dst*.642643В ядре Linux старше 5.3 файлы, на которые указывают *src* и *dst*, должны находиться в одной файловой системе, иначе возникает исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с [`errno`](https://python-all.ru/3.16/library/exceptions.html#OSError.errno), установленным в [`errno.EXDEV`](https://python-all.ru/3.16/library/errno.html#errno.EXDEV).644645Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пользовательское пространство и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации, такие как использование reflinks (т.е. два или более индексных дескриптора, которые разделяют указатели на одни и те же дисковые блоки с копированием при записи; поддерживаемые файловые системы включают btrfs и XFS) и копирование на стороне сервера (в случае NFS).646647Функция копирует байты между двумя файловыми дескрипторами. Текстовые параметры, такие как кодировка и конец строки, игнорируются.648649Возвращаемое значение – количество скопированных байт. Оно может быть меньше запрошенного объёма.650651> **Примечание**652>653> На Linux `os.copy_file_range()` не следует использовать для копирования диапазона из псевдофайла в специальной файловой системе, такой как procfs и sysfs. Он всегда будет копировать ноль байт и возвращать 0, как если бы файл был пуст, из-за известной проблемы ядра Linux.654655[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.5 с glibc \>= 2.27.656657Добавлено в версии 3.8.658659#### `os.device_encoding(fd)`660661Возвращает строку, описывающую кодировку устройства, связанного с *fd*, если оно подключено к терминалу; иначе возвращает [`None`](https://python-all.ru/3.16/library/constants.html#None).662663На Unix, если включён [режим Python UTF-8](https://python-all.ru/3.16/library/os.html#utf8-mode), возвращает `'UTF-8'` вместо кодировки устройства.664665Изменено в версии 3.10: На Unix функция теперь реализует режим Python UTF-8.666667#### `os.dup(fd, /)`668669Возвращает дубликат файлового дескриптора *fd*. Новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).670671В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый файловый дескриптор является [наследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).672673[Доступность](https://python-all.ru/3.16/library/intro.html#availability): не WASI.674675Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.676677#### `os.dup2(fd, fd2, inheritable=True)`678679Дублирует файловый дескриптор *fd* в *fd2*, предварительно закрывая последний, если необходимо. Возвращает *fd2*. Новый файловый дескриптор по умолчанию является [наследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance) или ненаследуемым, если *inheritable* равно `False`.680681[Доступность](https://python-all.ru/3.16/library/intro.html#availability): не WASI.682683Изменено в версии 3.4: Добавлен необязательный параметр *inheritable*.684685Изменено в версии 3.7: Возвращает *fd2* при успехе. Ранее всегда возвращалось `None`.686687#### `os.fchmod(fd, mode)`688689Изменяет режим файла, заданного *fd*, на числовой *mode*. См. документацию [`chmod()`](https://python-all.ru/3.16/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(fd, mode)`.690691Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.692693[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.694695Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.696697Изменено в версии 3.13: Добавлена поддержка в Windows.698699#### `os.fchown(fd, uid, gid)`700701Изменяет идентификаторы владельца и группы файла, заданного *fd*, на числовые *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См. [`chown()`](https://python-all.ru/3.16/library/os.html#os.chown). Начиная с Python 3.3, это эквивалентно `os.chown(fd, uid, gid)`.702703Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.704705[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.706707Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.708709#### `os.fdatasync(fd)`710711Принудительная запись файла с файловым дескриптором *fd* на диск. Не принуждает к обновлению метаданных.712713[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не macOS, не iOS.714715#### `os.fpathconf(fd, name, /)`716717Возвращает информацию о системной конфигурации, относящуюся к открытому файлу. *name* задаёт значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и другие). Некоторые платформы определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для *name*.718719Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.16/library/errno.html#errno.EINVAL) в качестве кода ошибки.720721Начиная с Python 3.3, это эквивалентно `os.pathconf(fd, name)`.722723[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.724725#### `os.fstat(fd)`726727Получить статус файлового дескриптора *fd*. Возвращает объект [`stat_result`](https://python-all.ru/3.16/library/os.html#os.stat_result).728729Начиная с Python 3.3, это эквивалентно `os.stat(fd)`.730731> **См. также**732>733> Функция [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat).734735#### `os.fstatvfs(fd, /)`736737Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором *fd*, в виде [`statvfs_result`](https://python-all.ru/3.16/library/os.html#os.statvfs_result), как [`statvfs()`](https://python-all.ru/3.16/library/os.html#os.statvfs). Начиная с Python 3.3, это эквивалентно `os.statvfs(fd)`.738739[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.740741#### `os.fsync(fd)`742743Принудительно записывает файл с файловым дескриптором *fd* на диск. В Unix вызывает нативную функцию `fsync()`; в Windows – функцию MS `_commit()`.744745Если работа ведётся с буферизованным файловым объектом Python [file object](https://python-all.ru/3.16/glossary.html#term-file-object) *f*, сначала следует выполнить `f.flush()`, а затем `os.fsync(f.fileno())`, чтобы гарантировать запись на диск всех внутренних буферов, связанных с *f*.746747[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.748749#### `os.ftruncate(fd, length, /)`750751Обрезает файл, соответствующий файловому дескриптору *fd*, так, чтобы его размер не превышал *length* байт. Начиная с Python 3.3, это эквивалентно `os.truncate(fd, length)`.752753Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.truncate` с аргументами `fd`, `length`.754755[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.756757Изменено в версии 3.5: Добавлена поддержка Windows758759#### `os.get_blocking(fd, /)`760761Возвращает блокирующий режим файлового дескриптора: `False`, если установлен флаг [`O_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.O_NONBLOCK), и `True`, если флаг сброшен.762763См. также [`set_blocking()`](https://python-all.ru/3.16/library/os.html#os.set_blocking) и [`socket.socket.setblocking()`](https://python-all.ru/3.16/library/socket.html#socket.socket.setblocking).764765[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.766767Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.768769В Windows эта функция ограничена каналами (pipes).770771Добавлено в версии 3.5.772773Изменено в версии 3.12: Добавлена поддержка каналов в Windows.774775#### `os.grantpt(fd, /)`776777Предоставляет доступ к ведомому псевдотерминальному устройству, связанному с главным псевдотерминальным устройством, на которое ссылается файловый дескриптор *fd*. Файловый дескриптор *fd* не закрывается при сбое.778779Вызывает функцию из стандартной библиотеки C `grantpt()`.780781[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.782783Добавлено в версии 3.13.784785#### `os.isatty(fd, /)`786787Возвращает `True`, если файловый дескриптор *fd* открыт и подключён к устройству типа tty, иначе `False`.788789#### `os.lockf(fd, cmd, len, /)`790791Применяет, проверяет или удаляет POSIX-блокировку на открытом файловом дескрипторе. *fd* – открытый файловый дескриптор. *cmd* задаёт команду: одну из [`F_LOCK`](https://python-all.ru/3.16/library/os.html#os.F_LOCK), [`F_TLOCK`](https://python-all.ru/3.16/library/os.html#os.F_TLOCK), [`F_ULOCK`](https://python-all.ru/3.16/library/os.html#os.F_ULOCK) или [`F_TEST`](https://python-all.ru/3.16/library/os.html#os.F_TEST). *len* задаёт участок файла для блокировки.792793Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.lockf` с аргументами `fd`, `cmd`, `len`.794795[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.796797Добавлено в версии 3.3.798799#### `os.F_LOCK`800801#### `os.F_TLOCK`802803#### `os.F_ULOCK`804805#### `os.F_TEST`806807Флаги, указывающие, какое действие выполнит [`lockf()`](https://python-all.ru/3.16/library/os.html#os.lockf).808809[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.810811Добавлено в версии 3.3.812813#### `os.login_tty(fd, /)`814815Подготавливает tty, чей файловый дескриптор равен fd, для нового сеанса входа в систему. Делает вызывающий процесс лидером сеанса; делает tty управляющим tty, stdin, stdout и stderr вызывающего процесса; закрывает fd.816817[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.818819Добавлено в версии 3.12.820821#### `os.lseek(fd, pos, whence, /)`822823Устанавливает текущую позицию файлового дескриптора *fd* в позицию *pos*, изменённую согласно *whence*, и возвращает новую позицию в байтах относительно начала файла. Допустимые значения для *whence*:824825- [`SEEK_SET`](https://python-all.ru/3.16/library/os.html#os.SEEK_SET) или `0` – устанавливает *pos* относительно начала файла826- [`SEEK_CUR`](https://python-all.ru/3.16/library/os.html#os.SEEK_CUR) или `1` – устанавливает *pos* относительно текущей позиции файла827- [`SEEK_END`](https://python-all.ru/3.16/library/os.html#os.SEEK_END) или `2` – устанавливает *pos* относительно конца файла828- [`SEEK_HOLE`](https://python-all.ru/3.16/library/os.html#os.SEEK_HOLE) – устанавливает *pos* на следующую позицию данных относительно *pos*829- [`SEEK_DATA`](https://python-all.ru/3.16/library/os.html#os.SEEK_DATA) – устанавливает *pos* на следующую дыру данных относительно *pos*830831Изменено в версии 3.3: Добавлена поддержка `SEEK_HOLE` и `SEEK_DATA`.832833#### `os.SEEK_SET`834835#### `os.SEEK_CUR`836837#### `os.SEEK_END`838839Параметры для функции [`lseek()`](https://python-all.ru/3.16/library/os.html#os.lseek) и метода [`seek()`](https://python-all.ru/3.16/library/io.html#io.IOBase.seek) на [объектах, подобных файлам](https://python-all.ru/3.16/glossary.html#term-file-object), для whence при настройке указателя позиции файла.840841**[`SEEK_SET`](https://python-all.ru/3.16/library/os.html#os.SEEK_SET)**842843Настраивает позицию файла относительно начала файла.844845**[`SEEK_CUR`](https://python-all.ru/3.16/library/os.html#os.SEEK_CUR)**846847Настраивает позицию файла относительно текущей позиции файла.848849**[`SEEK_END`](https://python-all.ru/3.16/library/os.html#os.SEEK_END)**850851Настраивает позицию файла относительно конца файла.852853Их значения: 0, 1 и 2 соответственно.854855#### `os.SEEK_HOLE`856857#### `os.SEEK_DATA`858859Параметры для функции [`lseek()`](https://python-all.ru/3.16/library/os.html#os.lseek) и метода [`seek()`](https://python-all.ru/3.16/library/io.html#io.IOBase.seek) на [объектах, подобных файлам](https://python-all.ru/3.16/glossary.html#term-file-object), для поиска данных и дыр в разреженных файлах.860861**`SEEK_DATA`**862863Настраивает смещение файла на следующую позицию, содержащую данные, относительно текущей позиции поиска.864865**`SEEK_HOLE`**866867Настраивает смещение файла на следующую позицию, содержащую дыру, относительно текущей позиции поиска. Дыра определяется как последовательность нулей.868869> **Примечание**870>871> Эти операции имеют смысл только для файловых систем, которые их поддерживают.872873[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 3.1, macOS, Unix874875Добавлено в версии 3.3.876877#### `os.open(path, flags, mode=0o777, *, dir_fd=None)`878879Открывает файл *path* и устанавливает различные флаги в соответствии с *flags* и, возможно, его режим в соответствии с *mode*. При вычислении *mode* текущее значение umask сначала маскируется. Возвращает файловый дескриптор для вновь открытого файла. Новый файловый дескриптор [не наследуется](https://python-all.ru/3.16/library/os.html#fd-inheritance).880881Описание значений флагов и режимов см. в документации библиотеки времени выполнения C; константы флагов (например, [`O_RDONLY`](https://python-all.ru/3.16/library/os.html#os.O_RDONLY) и [`O_WRONLY`](https://python-all.ru/3.16/library/os.html#os.O_WRONLY)) определены в модуле `os`. В частности, в Windows необходимо добавить [`O_BINARY`](https://python-all.ru/3.16/library/os.html#os.O_BINARY) для открытия файлов в двоичном режиме.882883Эта функция поддерживает [пути относительно файловых дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd) с помощью параметра *dir\_fd*.884885Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `open` с аргументами `path`, `mode`, `flags`.886887Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.888889> **Примечание**890>891> Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию `open()`, которая возвращает [файловый объект](https://python-all.ru/3.16/glossary.html#term-file-object) с методами [`read()`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase.read) и [`write()`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase.write). Чтобы обернуть файловый дескриптор в файловый объект, используйте [`fdopen()`](https://python-all.ru/3.16/library/os.html#os.fdopen).892893Изменено в версии 3.3: Добавлен параметр *dir\_fd*.894895Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.16/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.16/library/os.html) для обоснования).896897Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).898899Следующие константы являются значениями параметра *flags* функции [`open()`](https://python-all.ru/3.16/library/os.html#os.open). Их можно комбинировать с помощью оператора побитового ИЛИ `|`. Некоторые из них доступны не на всех платформах. Описание их доступности и использования см. в *[справочной странице open(2)](https://python-all.ru/3.16/library/os.html)* в Unix или [в MSDN](https://python-all.ru/3.16/library/os.html) в Windows.900901#### `os.O_RDONLY`902903#### `os.O_WRONLY`904905#### `os.O_RDWR`906907#### `os.O_APPEND`908909#### `os.O_CREAT`910911#### `os.O_EXCL`912913#### `os.O_TRUNC`914915Приведённые выше константы доступны в Unix и Windows.916917#### `os.O_DSYNC`918919#### `os.O_RSYNC`920921#### `os.O_SYNC`922923#### `os.O_NDELAY`924925#### `os.O_NONBLOCK`926927#### `os.O_NOCTTY`928929#### `os.O_CLOEXEC`930931Приведённые выше константы доступны только в Unix.932933Изменено в версии 3.3: добавлена константа `O_CLOEXEC`.934935#### `os.O_BINARY`936937#### `os.O_NOINHERIT`938939#### `os.O_SHORT_LIVED`940941#### `os.O_TEMPORARY`942943#### `os.O_RANDOM`944945#### `os.O_SEQUENTIAL`946947#### `os.O_TEXT`948949Приведённые выше константы доступны только в Windows.950951#### `os.O_EVTONLY`952953#### `os.O_FSYNC`954955#### `os.O_SYMLINK`956957#### `os.O_NOFOLLOW_ANY`958959Приведённые выше константы доступны только в macOS.960961Изменено в версии 3.10: добавлены константы `O_EVTONLY`, `O_FSYNC`, `O_SYMLINK` и `O_NOFOLLOW_ANY`.962963#### `os.O_ASYNC`964965#### `os.O_DIRECT`966967#### `os.O_DIRECTORY`968969#### `os.O_NOFOLLOW`970971#### `os.O_NOATIME`972973#### `os.O_PATH`974975#### `os.O_TMPFILE`976977#### `os.O_SHLOCK`978979#### `os.O_EXLOCK`980981Вышеуказанные константы являются расширениями и отсутствуют, если не определены библиотекой C.982983Изменено в версии 3.4: Добавлена `O_PATH` в системах, которые её поддерживают. Добавлена `O_TMPFILE`, доступна только на Linux Kernel 3.11 или новее.984985#### `os.openpty()`986987Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов `(master, slave)` для pty и tty соответственно. Новые файловые дескрипторы являются [ненаследуемыми](https://python-all.ru/3.16/library/os.html#fd-inheritance). Для (чуть более) переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.16/library/pty.html#module-pty).988989[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.990991Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.992993#### `os.pipe()`994995Создаёт канал. Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно. Новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).996997[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.998999Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.10001001#### `os.pipe2(flags, /)`10021003Создаёт канал с атомарной установкой *flags*. *flags* можно составить с помощью логического ИЛИ одной или нескольких из этих констант: [`O_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.O_NONBLOCK), [`O_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.O_CLOEXEC). Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно.10041005[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не macOS, не iOS.10061007Добавлено в версии 3.3.10081009#### `os.posix_fallocate(fd, offset, len, /)`10101011Гарантирует, что для файла, указанного в *fd*, выделено достаточно дискового пространства, начиная с *offset* и продолжаясь на *len* байтов.10121013[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не macOS, не iOS.10141015Добавлено в версии 3.3.10161017#### `os.posix_fadvise(fd, offset, len, advice, /)`10181019Объявляет о намерении получить доступ к данным по определённому шаблону, что позволяет ядру выполнять оптимизации. Совет применяется к области файла, указанной в *fd*, начиная с *offset* и продолжаясь на *len* байтов. *advice* может быть одним из [`POSIX_FADV_NORMAL`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_NORMAL), [`POSIX_FADV_SEQUENTIAL`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_SEQUENTIAL), [`POSIX_FADV_RANDOM`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_RANDOM), [`POSIX_FADV_NOREUSE`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_NOREUSE), [`POSIX_FADV_WILLNEED`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_WILLNEED) или [`POSIX_FADV_DONTNEED`](https://python-all.ru/3.16/library/os.html#os.POSIX_FADV_DONTNEED).10201021[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не macOS, не iOS.10221023Добавлено в версии 3.3.10241025#### `os.POSIX_FADV_NORMAL`10261027#### `os.POSIX_FADV_SEQUENTIAL`10281029#### `os.POSIX_FADV_RANDOM`10301031#### `os.POSIX_FADV_NOREUSE`10321033#### `os.POSIX_FADV_WILLNEED`10341035#### `os.POSIX_FADV_DONTNEED`10361037Флаги, которые можно использовать в *advice* в [`posix_fadvise()`](https://python-all.ru/3.16/library/os.html#os.posix_fadvise), указывающие шаблон доступа, который, вероятно, будет использоваться.10381039[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.10401041Добавлено в версии 3.3.10421043#### `os.pread(fd, n, offset, /)`10441045Читает не более *n* байтов из файлового дескриптора *fd* в позиции *offset*, не изменяя файловое смещение.10461047Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного *fd*, возвращается пустой байтовый объект.10481049[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.10501051Добавлено в версии 3.3.10521053#### `os.posix_openpt(oflag, /)`10541055Открывает и возвращает файловый дескриптор для ведущего псевдотерминального устройства.10561057Вызывает функцию стандартной библиотеки C `posix_openpt()`. Аргумент *oflag* используется для установки флагов состояния файла и режимов доступа к файлам, как указано в справочной странице `posix_openpt()` вашей системы.10581059Возвращаемый файловый дескриптор [не наследуется](https://python-all.ru/3.16/library/os.html#fd-inheritance). Если значение [`O_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.O_CLOEXEC) доступно в системе, оно добавляется к *oflag*.10601061[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.10621063Добавлено в версии 3.13.10641065#### `os.preadv(fd, buffers, offset, flags=0, /)`10661067Читает из файлового дескриптора *fd* в позиции *offset* в изменяемые [байтоподобные объекты](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *buffers*, оставляя файловое смещение неизменным. Данные передаются в каждый буфер до его заполнения, после чего осуществляется переход к следующему буферу в последовательности для сохранения оставшихся данных.10681069Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:10701071- [`RWF_HIPRI`](https://python-all.ru/3.16/library/os.html#os.RWF_HIPRI)1072- [`RWF_NOWAIT`](https://python-all.ru/3.16/library/os.html#os.RWF_NOWAIT)1073- [`RWF_DONTCACHE`](https://python-all.ru/3.16/library/os.html#os.RWF_DONTCACHE)10741075Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.10761077Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.16/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.10781079Объединяет функциональность [`os.readv()`](https://python-all.ru/3.16/library/os.html#os.readv) и [`os.pread()`](https://python-all.ru/3.16/library/os.html#os.pread).10801081[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.30, FreeBSD \>= 6.0, OpenBSD \>= 2.7, AIX \>= 7.1.10821083Использование флагов требует Linux \>= 4.6.10841085Добавлено в версии 3.7.10861087#### `os.RWF_NOWAIT`10881089Не ждать данные, которые не доступны немедленно. Если указан этот флаг, системный вызов вернётся немедленно, если пришлось бы читать данные из резервного хранилища или ждать блокировку.10901091Если какие-то данные были успешно прочитаны, возвращается количество прочитанных байт. Если не было прочитано ни одного байта, возвращается `-1` и устанавливается errno в [`errno.EAGAIN`](https://python-all.ru/3.16/library/errno.html#errno.EAGAIN).10921093[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.14.10941095Добавлено в версии 3.7.10961097#### `os.RWF_HIPRI`10981099Чтение/запись с высоким приоритетом. Позволяет блочным файловым системам использовать опрос устройства, что обеспечивает меньшую задержку, но может потреблять дополнительные ресурсы.11001101В настоящее время в Linux эта возможность доступна только для файлового дескриптора, открытого с использованием флага [`O_DIRECT`](https://python-all.ru/3.16/library/os.html#os.O_DIRECT).11021103[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.6.11041105Добавлено в версии 3.7.11061107#### `os.RWF_DONTCACHE`11081109Использует некэшированный буферизованный ввод-вывод.11101111[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 6.1411121113Добавлено в версии 3.15.11141115#### `os.RWF_ATOMIC`11161117Записывает данные атомарно. Требует выравнивания на единицу атомарной записи устройства.11181119[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 6.1111201121Добавлено в версии 3.15.11221123#### `os.ptsname(fd, /)`11241125Возвращает имя подчинённого (slave) псевдотерминального устройства, связанного с главным (master) псевдотерминальным устройством, на которое ссылается файловый дескриптор *fd*. Файловый дескриптор *fd* не закрывается при ошибке.11261127Вызывает реентерабельную функцию стандартной библиотеки C `ptsname_r()`, если она доступна; в противном случае вызывается функция стандартной библиотеки C `ptsname()`, которая не гарантирует потокобезопасность.11281129[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.11301131Добавлено в версии 3.13.11321133#### `os.pwrite(fd, str, offset, /)`11341135Записывает байтовую строку из *str* в файловый дескриптор *fd* в позиции *offset*, оставляя файловое смещение неизменным.11361137Возвращает количество байтов, фактически записанных.11381139[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.11401141Добавлено в версии 3.3.11421143#### `os.pwritev(fd, buffers, offset, flags=0, /)`11441145Записывает содержимое *buffers* в файловый дескриптор *fd* со смещением *offset*, оставляя файловое смещение неизменным. *buffers* должна быть последовательностью [байтоподобных объектов](https://python-all.ru/3.16/glossary.html#term-bytes-like-object). Буферы обрабатываются в порядке массива. Сначала записывается всё содержимое первого буфера, затем переход ко второму и так далее.11461147Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:11481149- [`RWF_DSYNC`](https://python-all.ru/3.16/library/os.html#os.RWF_DSYNC)1150- [`RWF_SYNC`](https://python-all.ru/3.16/library/os.html#os.RWF_SYNC)1151- [`RWF_APPEND`](https://python-all.ru/3.16/library/os.html#os.RWF_APPEND)1152- [`RWF_DONTCACHE`](https://python-all.ru/3.16/library/os.html#os.RWF_DONTCACHE)1153- [`RWF_ATOMIC`](https://python-all.ru/3.16/library/os.html#os.RWF_ATOMIC)11541155Возвращает общее количество реально записанных байт.11561157Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.16/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.11581159Объединяет функциональность [`os.writev()`](https://python-all.ru/3.16/library/os.html#os.writev) и [`os.pwrite()`](https://python-all.ru/3.16/library/os.html#os.pwrite).11601161[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.30, FreeBSD \>= 6.0, OpenBSD \>= 2.7, AIX \>= 7.1.11621163Использование флагов требует Linux \>= 4.6.11641165Добавлено в версии 3.7.11661167#### `os.RWF_DSYNC`11681169Предоставляет эквивалент флага [`O_DSYNC`](https://python-all.ru/3.16/library/os.html#os.O_DSYNC) [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) для отдельной операции записи. Действие этого флага распространяется только на диапазон данных, записываемых системным вызовом.11701171[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.7.11721173Добавлено в версии 3.7.11741175#### `os.RWF_SYNC`11761177Предоставляет эквивалент флага [`O_SYNC`](https://python-all.ru/3.16/library/os.html#os.O_SYNC) [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) для отдельной операции записи. Действие этого флага распространяется только на диапазон данных, записываемых системным вызовом.11781179[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.7.11801181Добавлено в версии 3.7.11821183#### `os.RWF_APPEND`11841185Предоставляет эквивалент флага [`O_APPEND`](https://python-all.ru/3.16/library/os.html#os.O_APPEND) [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) для отдельной операции записи. Этот флаг имеет смысл только для [`os.pwritev()`](https://python-all.ru/3.16/library/os.html#os.pwritev), и его действие распространяется только на диапазон данных, записываемых системным вызовом. Аргумент *смещение* не влияет на операцию записи; данные всегда добавляются в конец файла. Однако если аргумент *смещение* равен `-1`, текущее *смещение* в файле обновляется.11861187[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.16.11881189Добавлено в версии 3.10.11901191#### `os.read(fd, n, /)`11921193Читает не более *n* байт из файлового дескриптора *fd*.11941195Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного *fd*, возвращается пустой байтовый объект.11961197> **Примечание**1198>1199> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.16/library/os.html#os.pipe). Чтобы прочитать «файловый объект», возвращаемый встроенной функцией [`open()`](https://python-all.ru/3.16/library/functions.html#open) или [`popen()`](https://python-all.ru/3.16/library/os.html#os.popen) или [`fdopen()`](https://python-all.ru/3.16/library/os.html#os.fdopen), или [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin), используйте его методы [`read()`](https://python-all.ru/3.16/library/io.html#io.TextIOBase.read) или [`readline()`](https://python-all.ru/3.16/library/io.html#io.IOBase.readline).12001201Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.16/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.16/library/os.html) для обоснования).12021203#### `os.readinto(fd, buffer, /)`12041205Читает из файлового дескриптора *fd* в изменяемый [буферный объект](https://python-all.ru/3.16/c-api/buffer.html#bufferobjects) *buffer*.12061207Аргумент *buffer* должен быть изменяемым и [байтоподобным](https://python-all.ru/3.16/glossary.html#term-bytes-like-object). В случае успеха возвращает количество прочитанных байт. Может быть прочитано меньше байт, чем размер буфера. Базовый системный вызов будет повторен при прерывании сигналом, если только обработчик сигнала не возбуждает исключение. Другие ошибки не повторяются, и будет возбуждено исключение.12081209Возвращает 0, если *fd* находится в конце файла или если предоставленный *buffer* имеет нулевую длину (что можно использовать для проверки ошибок без чтения данных). Никогда не возвращает отрицательное значение.12101211> **Примечание**1212>1213> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) или [`os.pipe()`](https://python-all.ru/3.16/library/os.html#os.pipe). Чтобы прочитать «файловый объект», возвращаемый встроенной функцией [`open()`](https://python-all.ru/3.16/library/functions.html#open) или [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin), используйте его методы, например [`io.BufferedIOBase.readinto()`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase.readinto), [`io.BufferedIOBase.read()`](https://python-all.ru/3.16/library/io.html#io.BufferedIOBase.read) или [`io.TextIOBase.read()`](https://python-all.ru/3.16/library/io.html#io.TextIOBase.read)12141215Добавлено в версии 3.14.12161217#### `os.sendfile(out_fd, in_fd, offset, count)`12181219#### `os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)`12201221Копирует *count* байт из файлового дескриптора *in\_fd* в файловый дескриптор *out\_fd* начиная с *смещения*. Возвращает количество отправленных байт. Когда достигнут конец файла, возвращается `0`.12221223Первая форма записи функции поддерживается на всех платформах, которые определяют `sendfile()`.12241225В Linux, если *смещение* задано как `None`, байты считываются из текущей позиции *in\_fd*, и позиция *in\_fd* обновляется.12261227Второй случай может использоваться в macOS и FreeBSD, где *headers* и *trailers* – произвольные последовательности буферов, которые записываются до и после данных из *in\_fd*. Возвращает то же, что и первый случай.12281229В macOS и FreeBSD значение `0` для *count* означает отправку до тех пор, пока не будет достигнут конец *in\_fd*.12301231Все платформы поддерживают сокеты в качестве файлового дескриптора *out\_fd*, а некоторые платформы также допускают другие типы (например, обычный файл, канал).12321233Кроссплатформенным приложениям не следует использовать аргументы *headers*, *trailers* и *flags*.12341235[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.12361237> **Примечание**1238>1239> Для высокоуровневой обёртки над `sendfile()` см. [`socket.socket.sendfile()`](https://python-all.ru/3.16/library/socket.html#socket.socket.sendfile).12401241Добавлено в версии 3.3.12421243Изменено в версии 3.9: Параметры *out* и *in* переименованы в *out\_fd* и *in\_fd*.12441245#### `os.SF_NODISKIO`12461247#### `os.SF_MNOWAIT`12481249#### `os.SF_SYNC`12501251Параметры функции [`sendfile()`](https://python-all.ru/3.16/library/os.html#os.sendfile), если реализация их поддерживает.12521253[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.12541255Добавлено в версии 3.3.12561257#### `os.SF_NOCACHE`12581259Параметр функции [`sendfile()`](https://python-all.ru/3.16/library/os.html#os.sendfile), если реализация его поддерживает. Данные не будут кэшироваться в виртуальной памяти и будут освобождены после использования.12601261[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.12621263Добавлено в версии 3.12.12641265#### `os.set_blocking(fd, blocking, /)`12661267Устанавливает режим блокировки для указанного файлового дескриптора. Устанавливает флаг [`O_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.O_NONBLOCK), если блокировка `False`, и сбрасывает флаг в противном случае.12681269См. также [`get_blocking()`](https://python-all.ru/3.16/library/os.html#os.get_blocking) и [`socket.socket.setblocking()`](https://python-all.ru/3.16/library/socket.html#socket.socket.setblocking).12701271[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.12721273Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.12741275В Windows эта функция ограничена каналами (pipes).12761277Добавлено в версии 3.5.12781279Изменено в версии 3.12: Добавлена поддержка каналов в Windows.12801281#### `os.splice(src, dst, count, offset_src=None, offset_dst=None, flags=0)`12821283Передаёт *count* байт из файлового дескриптора *src*, начиная со смещения *offset\_src*, в файловый дескриптор *dst*, начиная со смещения *offset\_dst*.12841285Поведение сращивания можно изменить, указав значение *flags*. Можно использовать любые из следующих переменных, комбинируя их побитовым ИЛИ (оператор `|`):12861287- Если указан [`SPLICE_F_MOVE`](https://python-all.ru/3.16/library/os.html#os.SPLICE_F_MOVE), ядро пытается переместить страницы вместо копирования, но страницы всё равно могут быть скопированы, если ядро не может переместить их из канала.1288- Если указан [`SPLICE_F_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.SPLICE_F_NONBLOCK), ядро просят не блокироваться при вводе-выводе. Это делает операции splice над каналами неблокирующими, но splice всё равно может блокироваться, так как соединяемые файловые дескрипторы могут быть блокирующими.1289- Если указан [`SPLICE_F_MORE`](https://python-all.ru/3.16/library/os.html#os.SPLICE_F_MORE), это подсказывает ядру, что в последующем вызове splice поступит ещё больше данных.12901291Как минимум один из файловых дескрипторов должен ссылаться на канал. Если *offset\_src* равно `None`, то чтение из *src* происходит с текущей позиции; аналогично для *offset\_dst*. Смещение, связанное с файловым дескриптором, который ссылается на канал, должно быть `None`. Файлы, на которые указывают *src* и *dst*, должны находиться в одной файловой системе, иначе возникает исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с [`errno`](https://python-all.ru/3.16/library/exceptions.html#OSError.errno), установленным в [`errno.EXDEV`](https://python-all.ru/3.16/library/errno.html#errno.EXDEV).12921293Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в бинарном режиме.12941295При успешном завершении возвращается количество байт, переданных в канал или из канала. Возврат 0 означает конец ввода. Если *src* ссылается на канал, это означает, что данных для передачи нет, и блокироваться не имеет смысла, так как к концу записи канала не подключено ни одного записывающего процесса.12961297> **См. также**1298>1299> Справочная страница *[splice(2)](https://python-all.ru/3.16/library/os.html)*.13001301[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.17 с glibc \>= 2.513021303Добавлено в версии 3.10.13041305#### `os.SPLICE_F_MOVE`13061307#### `os.SPLICE_F_NONBLOCK`13081309#### `os.SPLICE_F_MORE`13101311Добавлено в версии 3.10.13121313#### `os.readv(fd, buffers, /)`13141315Читает из файлового дескриптора *fd* в несколько изменяемых [объектов, подобных байтам](https://python-all.ru/3.16/glossary.html#term-bytes-like-object) *buffers*. Передаёт данные в каждый буфер до его заполнения, затем переходит к следующему буферу в последовательности для размещения оставшихся данных.13161317Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.13181319Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.16/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.13201321[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.13221323Добавлено в версии 3.3.13241325#### `os.tcgetpgrp(fd, /)`13261327Возвращает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open)).13281329[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.13301331#### `os.tcsetpgrp(fd, pg, /)`13321333Устанавливает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open)), в *pg*.13341335[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.13361337#### `os.ttyname(fd, /)`13381339Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором *fd*. Если *fd* не связан с терминальным устройством, возбуждается исключение.13401341[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.13421343#### `os.unlockpt(fd, /)`13441345Разблокирует подчинённое псевдотерминальное устройство, связанное с главным псевдотерминальным устройством, на которое ссылается файловый дескриптор *fd*. Файловый дескриптор *fd* не закрывается при ошибке.13461347Вызывает функцию из стандартной библиотеки C `unlockpt()`.13481349[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.13501351Добавлено в версии 3.13.13521353#### `os.write(fd, str, /)`13541355Записывает байтовую строку из *str* в файловый дескриптор *fd*.13561357Возвращает количество байтов, фактически записанных.13581359> **Примечание**1360>1361> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/3.16/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.16/library/os.html#os.pipe). Чтобы записать «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.16/library/functions.html#open) или [`popen()`](https://python-all.ru/3.16/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/3.16/library/os.html#os.fdopen), или [`sys.stdout`](https://python-all.ru/3.16/library/sys.html#sys.stdout), или [`sys.stderr`](https://python-all.ru/3.16/library/sys.html#sys.stderr), используйте его метод [`write()`](https://python-all.ru/3.16/library/io.html#io.TextIOBase.write).13621363Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.16/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.16/library/os.html) для обоснования).13641365#### `os.writev(fd, buffers, /)`13661367Записывает содержимое *buffers* в файловый дескриптор *fd*. *buffers* должен быть последовательностью [байтоподобных объектов](https://python-all.ru/3.16/glossary.html#term-bytes-like-object). Буферы обрабатываются в порядке массива. Сначала полностью записывается содержимое первого буфера, затем второго и так далее.13681369Возвращает общее количество байтов, фактически записанных.13701371Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.16/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.13721373[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.13741375Добавлено в версии 3.3.13761377### Определение размера терминала13781379Добавлено в версии 3.3.13801381#### `os.get_terminal_size(fd=STDOUT_FILENO, /)`13821383Возвращает размер окна терминала в виде `(columns, lines)`, кортежа типа [`terminal_size`](https://python-all.ru/3.16/library/os.html#os.terminal_size).13841385Необязательный аргумент `fd` (по умолчанию `STDOUT_FILENO`, или стандартный вывод) указывает, какой файловый дескриптор следует опросить.13861387Если файловый дескриптор не подключён к терминалу, возбуждается [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError).13881389[`shutil.get_terminal_size()`](https://python-all.ru/3.16/library/shutil.html#shutil.get_terminal_size) – это высокоуровневая функция, которую следует использовать обычно; `os.get_terminal_size` – это низкоуровневая реализация.13901391[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.13921393#### `class os.terminal_size`13941395Подкласс кортежа, содержащий `(columns, lines)` окна терминала.13961397#### `columns`13981399Ширина окна терминала в символах.14001401#### `lines`14021403Высота окна терминала в символах.14041405### Наследование файловых дескрипторов14061407Добавлено в версии 3.4.14081409Файловый дескриптор имеет флаг «наследуемости», который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python 3.4, файловые дескрипторы, создаваемые Python, по умолчанию ненаследуемые.14101411В UNIX ненаследуемые файловые дескрипторы закрываются в дочерних процессах при запуске новой программы, а остальные файловые дескрипторы наследуются. Обратите внимание, что ненаследуемые файловые дескрипторы всё же *наследуются* дочерними процессами при [`os.fork()`](https://python-all.ru/3.16/library/os.html#os.fork).14121413В Windows ненаследуемые дескрипторы и файловые дескрипторы закрываются в дочерних процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout и stderr), которые всегда наследуются. При использовании функций [`spawn*`](https://python-all.ru/3.16/library/os.html#os.spawnl) наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы. При использовании модуля [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess) все файловые дескрипторы, кроме стандартных потоков, закрываются, а наследуемые дескрипторы наследуются только в том случае, если параметр *close\_fds* имеет значение `False`.14141415На платформах WebAssembly файловый дескриптор не может быть изменён.14161417#### `os.get_inheritable(fd, /)`14181419Получает флаг «наследуемости» указанного файлового дескриптора (логическое значение).14201421#### `os.set_inheritable(fd, inheritable, /)`14221423Устанавливает флаг наследуемости для указанного файлового дескриптора.14241425#### `os.get_handle_inheritable(handle, /)`14261427Возвращает флаг наследуемости для указанного дескриптора (булево значение).14281429[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.14301431#### `os.set_handle_inheritable(handle, inheritable, /)`14321433Устанавливает флаг наследуемости для указанного дескриптора.14341435[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.14361437## Файлы и каталоги14381439На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:14401441- **Указание файлового дескриптора:** Обычно аргумент *path*, передаваемый функциям модуля `os`, должен быть строкой, задающей путь к файлу. Однако некоторые функции теперь альтернативно принимают открытый файловый дескриптор в качестве аргумента *path*. В этом случае функция будет работать с файлом, на который ссылается дескриптор. В системах POSIX Python будет вызывать вариант функции с префиксом `f` (например, вызывать `fchdir` вместо `chdir`).14421443  Проверить, может ли *path* быть указан как файловый дескриптор для конкретной функции на вашей платформе, можно с помощью [`os.supports_fd`](https://python-all.ru/3.16/library/os.html#os.supports_fd). Если эта функциональность недоступна, её использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).14441445  Если функция также поддерживает аргументы *dir\_fd* или *follow\_symlinks*, то указывать любой из них при передаче *path* в качестве файлового дескриптора будет ошибкой.14461447- **Пути относительно дескрипторов каталогов:** Если *dir\_fd* не равен `None`, это должен быть файловый дескриптор, ссылающийся на каталог, а путь для операции должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь абсолютный, *dir\_fd* игнорируется. Для систем POSIX Python будет вызывать вариант функции с суффиксом `at` и, возможно, с префиксом `f` (например, вызывать `faccessat` вместо `access`).14481449  Проверить, поддерживается ли *dir\_fd* для конкретной функции на вашей платформе, можно с помощью [`os.supports_dir_fd`](https://python-all.ru/3.16/library/os.html#os.supports_dir_fd). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).14501451- **Не следовать по символьным ссылкам:** Если *follow\_symlinks* равно `False`, и последний элемент пути, над которым выполняется операция, является символьной ссылкой, функция будет работать с самой символьной ссылкой, а не с файлом, на который она указывает. Для систем POSIX Python будет вызывать вариант функции `l...`.14521453  Проверить, поддерживается ли *follow\_symlinks* для конкретной функции на вашей платформе, можно с помощью [`os.supports_follow_symlinks`](https://python-all.ru/3.16/library/os.html#os.supports_follow_symlinks). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).14541455#### `os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)`14561457Использует реальный UID/GID для проверки доступа к *path*. Обратите внимание, что большинство операций используют эффективные UID/GID, поэтому эта функция может использоваться в окружении suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к *path*. Параметр *mode* должен быть равен [`F_OK`](https://python-all.ru/3.16/library/os.html#os.F_OK) для проверки существования *path*, или может быть логическим ИЛИ одного или нескольких значений [`R_OK`](https://python-all.ru/3.16/library/os.html#os.R_OK), [`W_OK`](https://python-all.ru/3.16/library/os.html#os.W_OK) и [`X_OK`](https://python-all.ru/3.16/library/os.html#os.X_OK) для проверки прав доступа. Возвращает [`True`](https://python-all.ru/3.16/library/constants.html#True), если доступ разрешён, [`False`](https://python-all.ru/3.16/library/constants.html#False) – если нет. Подробнее см. на странице man Unix *[access(2)](https://python-all.ru/3.16/library/os.html)*.14581459Эта функция поддерживает [указание путей относительно дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd) и [отказ от следования по символьным ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).14601461Если *effective\_ids* равно `True`, `access()` будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных UID/GID. Параметр *effective\_ids* может не поддерживаться на вашей платформе; проверить, доступен ли он, можно с помощью [`os.supports_effective_ids`](https://python-all.ru/3.16/library/os.html#os.supports_effective_ids). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).14621463> **Примечание**1464>1465> Использование `access()` для проверки, авторизован ли пользователь, например, на открытие файла, перед фактическим открытием с помощью [`open()`](https://python-all.ru/3.16/library/functions.html#open), создаёт брешь в безопасности, поскольку пользователь может воспользоваться коротким временным промежутком между проверкой и открытием файла для его изменения. Предпочтительнее использовать подход [EAFP](https://python-all.ru/3.16/glossary.html#term-EAFP). Например:1466>1467> ```python1468> if os.access("myfile", os.R_OK):1469>     with open("myfile") as fp:1470>         return fp.read()1471> return "some default data"1472> ```1473>1474> лучше написать так:1475>1476> ```python1477> try:1478>     fp = open("myfile")1479> except PermissionError:1480>     return "some default data"1481> else:1482>     with fp:1483>         return fp.read()1484> ```14851486> **Примечание**1487>1488> Операции ввода-вывода могут завершиться ошибкой, даже если `access()` указывает, что они должны выполниться успешно, особенно для операций в сетевых файловых системах, которые могут иметь семантику прав доступа, выходящую за рамки обычной POSIX-модели битов разрешений.14891490Изменено в версии 3.3: Добавлены параметры *dir\_fd*, *effective\_ids* и *follow\_symlinks*.14911492Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).14931494#### `os.F_OK`14951496#### `os.R_OK`14971498#### `os.W_OK`14991500#### `os.X_OK`15011502Значения, которые передаются в параметре *mode* функции [`access()`](https://python-all.ru/3.16/library/os.html#os.access) для проверки существования, читаемости, возможности записи и исполнения *path*, соответственно.15031504#### `os.chdir(path)`15051506Изменяет текущий рабочий каталог на *path*.15071508Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd). Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.15091510Эта функция может вызывать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) и подклассы, такие как [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError), [`PermissionError`](https://python-all.ru/3.16/library/exceptions.html#PermissionError), и [`NotADirectoryError`](https://python-all.ru/3.16/library/exceptions.html#NotADirectoryError).15111512Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chdir` с аргументом `path`.15131514> **См. также**1515>1516> Контекстный менеджер [`contextlib.chdir()`](https://python-all.ru/3.16/library/contextlib.html#contextlib.chdir), который при входе меняет текущую рабочую директорию, а при выходе восстанавливает предыдущую.15171518Изменено в версии 3.3: Добавлена возможность указывать *path* как файловый дескриптор на некоторых платформах.15191520Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).15211522#### `os.chflags(path, flags, *, follow_symlinks=True)`15231524Устанавливает флаги *path* в числовое значение *flags*. *flags* может принимать комбинацию (побитовое ИЛИ) следующих значений (определённых в модуле [`stat`](https://python-all.ru/3.16/library/stat.html#module-stat)):15251526- [`stat.UF_NODUMP`](https://python-all.ru/3.16/library/stat.html#stat.UF_NODUMP)1527- [`stat.UF_IMMUTABLE`](https://python-all.ru/3.16/library/stat.html#stat.UF_IMMUTABLE)1528- [`stat.UF_APPEND`](https://python-all.ru/3.16/library/stat.html#stat.UF_APPEND)1529- [`stat.UF_OPAQUE`](https://python-all.ru/3.16/library/stat.html#stat.UF_OPAQUE)1530- [`stat.UF_NOUNLINK`](https://python-all.ru/3.16/library/stat.html#stat.UF_NOUNLINK)1531- [`stat.UF_COMPRESSED`](https://python-all.ru/3.16/library/stat.html#stat.UF_COMPRESSED)1532- [`stat.UF_HIDDEN`](https://python-all.ru/3.16/library/stat.html#stat.UF_HIDDEN)1533- [`stat.SF_ARCHIVED`](https://python-all.ru/3.16/library/stat.html#stat.SF_ARCHIVED)1534- [`stat.SF_IMMUTABLE`](https://python-all.ru/3.16/library/stat.html#stat.SF_IMMUTABLE)1535- [`stat.SF_APPEND`](https://python-all.ru/3.16/library/stat.html#stat.SF_APPEND)1536- [`stat.SF_NOUNLINK`](https://python-all.ru/3.16/library/stat.html#stat.SF_NOUNLINK)1537- [`stat.SF_SNAPSHOT`](https://python-all.ru/3.16/library/stat.html#stat.SF_SNAPSHOT)15381539Эта функция поддерживает [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).15401541Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chflags` с аргументами `path`, `flags`.15421543[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.15441545Изменено в версии 3.3: Добавлен параметр *follow\_symlinks*.15461547Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).15481549#### `os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)`15501551Изменяет режим *path* на числовое значение *mode*. *mode* может принимать одно из следующих значений (определённых в модуле [`stat`](https://python-all.ru/3.16/library/stat.html#module-stat)) или их побитовые комбинации:15521553- [`stat.S_ISUID`](https://python-all.ru/3.16/library/stat.html#stat.S_ISUID)1554- [`stat.S_ISGID`](https://python-all.ru/3.16/library/stat.html#stat.S_ISGID)1555- [`stat.S_ENFMT`](https://python-all.ru/3.16/library/stat.html#stat.S_ENFMT)1556- [`stat.S_ISVTX`](https://python-all.ru/3.16/library/stat.html#stat.S_ISVTX)1557- [`stat.S_IREAD`](https://python-all.ru/3.16/library/stat.html#stat.S_IREAD)1558- [`stat.S_IWRITE`](https://python-all.ru/3.16/library/stat.html#stat.S_IWRITE)1559- [`stat.S_IEXEC`](https://python-all.ru/3.16/library/stat.html#stat.S_IEXEC)1560- [`stat.S_IRWXU`](https://python-all.ru/3.16/library/stat.html#stat.S_IRWXU)1561- [`stat.S_IRUSR`](https://python-all.ru/3.16/library/stat.html#stat.S_IRUSR)1562- [`stat.S_IWUSR`](https://python-all.ru/3.16/library/stat.html#stat.S_IWUSR)1563- [`stat.S_IXUSR`](https://python-all.ru/3.16/library/stat.html#stat.S_IXUSR)1564- [`stat.S_IRWXG`](https://python-all.ru/3.16/library/stat.html#stat.S_IRWXG)1565- [`stat.S_IRGRP`](https://python-all.ru/3.16/library/stat.html#stat.S_IRGRP)1566- [`stat.S_IWGRP`](https://python-all.ru/3.16/library/stat.html#stat.S_IWGRP)1567- [`stat.S_IXGRP`](https://python-all.ru/3.16/library/stat.html#stat.S_IXGRP)1568- [`stat.S_IRWXO`](https://python-all.ru/3.16/library/stat.html#stat.S_IRWXO)1569- [`stat.S_IROTH`](https://python-all.ru/3.16/library/stat.html#stat.S_IROTH)1570- [`stat.S_IWOTH`](https://python-all.ru/3.16/library/stat.html#stat.S_IWOTH)1571- [`stat.S_IXOTH`](https://python-all.ru/3.16/library/stat.html#stat.S_IXOTH)15721573Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).15741575> **Примечание**1576>1577> Хотя Windows поддерживает `chmod()`, с его помощью можно установить только флаг «только для чтения» (через константы `stat.S_IWRITE` и `stat.S_IREAD` или соответствующее целое значение). Все остальные биты игнорируются. Значение по умолчанию *follow\_symlinks* в Windows – `False`.1578>1579> Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.15801581Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.15821583Изменено в версии 3.3: Добавлена возможность указывать *path* как открытый файловый дескриптор, а также аргументы *dir\_fd* и *follow\_symlinks*.15841585Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).15861587Изменено в версии 3.13: Добавлена поддержка файлового дескриптора и аргумента *follow\_symlinks* в Windows.15881589#### `os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)`15901591Изменяет идентификаторы владельца и группы *path* на числовые значения *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1.15921593Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).15941595См. [`shutil.chown()`](https://python-all.ru/3.16/library/shutil.html#shutil.chown) – функцию более высокого уровня, которая принимает имена в дополнение к числовым идентификаторам.15961597Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.15981599[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.16001601Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.16021603Изменено в версии 3.3: Добавлена возможность указывать *path* как открытый файловый дескриптор, а также аргументы *dir\_fd* и *follow\_symlinks*.16041605Изменено в версии 3.6: Поддерживает [path-подобный объект](https://python-all.ru/3.16/glossary.html#term-path-like-object).16061607#### `os.chroot(path)`16081609Изменяет корневую директорию текущего процесса на *path*.16101611[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android.16121613Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).16141615#### `os.fchdir(fd)`16161617Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором *fd*. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл. Начиная с Python 3.3, это эквивалентно `os.chdir(fd)`.16181619Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chdir` с аргументом `path`.16201621[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.16221623#### `os.getcwd()`16241625Возвращает строку, представляющую текущую рабочую директорию.16261627#### `os.getcwdb()`16281629Возвращает байтовую строку, представляющую текущую рабочую директорию.16301631Изменено в версии 3.8: Теперь функция использует кодировку UTF-8 в Windows вместо кодовой страницы ANSI; см. [**PEP 529**](https://python-all.ru/3.16/library/os.html) для обоснования. Функция больше не считается устаревшей в Windows.16321633#### `os.lchflags(path, flags)`16341635Устанавливает флаги *path* в числовое значение *flags*, как [`chflags()`](https://python-all.ru/3.16/library/os.html#os.chflags), но не следует символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chflags(path, flags, follow_symlinks=False)`.16361637Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chflags` с аргументами `path`, `flags`.16381639[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.16401641Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).16421643#### `os.lchmod(path, mode)`16441645Изменяет режим *path* на числовой *mode*. Если path является символической ссылкой, это влияет на саму ссылку, а не на цель. См. документацию [`chmod()`](https://python-all.ru/3.16/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(path, mode, follow_symlinks=False)`.16461647`lchmod()` не является частью POSIX, но реализации Unix могут предоставлять её, если поддерживается изменение режима символических ссылок.16481649Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.16501651[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не Linux, FreeBSD \>= 1.3, NetBSD \>= 1.3, не OpenBSD16521653Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).16541655Изменено в версии 3.13: Добавлена поддержка в Windows.16561657#### `os.lchown(path, uid, gid)`16581659Изменяет идентификаторы владельца и группы для *path* на числовые *uid* и *gid*. Эта функция не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chown(path, uid, gid, follow_symlinks=False)`.16601661Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.16621663[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.16641665Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).16661667#### `os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)`16681669Создаёт жёсткую ссылку, указывающую на *src*, с именем *dst*.16701671Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для задания [путей, относительных к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd), и [отказ от перехода по символическим ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks). Значение по умолчанию *follow\_symlinks* равно `False` в Windows.16721673Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.link` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.16741675[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.16761677Изменено в версии 3.2: Добавлена поддержка Windows.16781679Изменено в версии 3.3: Добавлены параметры *src\_dir\_fd*, *dst\_dir\_fd* и *follow\_symlinks*.16801681Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *src* и *dst*.16821683#### `os.listdir(path='.')`16841685Возвращает список, содержащий имена записей в каталоге, заданном *path*. Список находится в произвольном порядке и не включает специальные записи `'.'` и `'..'`, даже если они присутствуют в каталоге. Если файл удаляется из каталога или добавляется в него во время вызова этой функции, то будет ли включено имя для этого файла, не определено.16861687*path* может быть [объектом, подобным пути](https://python-all.ru/3.16/glossary.html#term-path-like-object). Если *path* имеет тип `bytes` (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)), возвращаемые имена файлов также будут иметь тип `bytes`; во всех остальных случаях они будут иметь тип `str`.16881689Эта функция также может поддерживать [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd); файловый дескриптор должен ссылаться на каталог.16901691Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.listdir` с аргументом `path`.16921693> **Примечание**1694>1695> Для кодирования имён файлов из `str` в `bytes` используйте [`fsencode()`](https://python-all.ru/3.16/library/os.html#os.fsencode).16961697> **См. также**1698>1699> Функция [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) возвращает записи каталога вместе с информацией об атрибутах файлов, что обеспечивает лучшую производительность для многих типичных сценариев использования.17001701Изменено в версии 3.2: Параметр *path* стал необязательным.17021703Изменено в версии 3.3: Добавлена поддержка указания *path* в качестве открытого файлового дескриптора.17041705Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).17061707Изменено в версии 3.15: `os.listdir(-1)` теперь завершается ошибкой `OSError(errno.EBADF)` вместо вывода списка текущего каталога.17081709#### `os.listdrives()`17101711Возвращает список, содержащий имена дисков в системе Windows.17121713Имя диска обычно выглядит как `'C:\\'`. Не каждое имя диска будет связано с томом, а некоторые могут быть недоступны по разным причинам, включая права доступа, сетевое подключение или отсутствие носителя. Эта функция не проверяет доступность.17141715Может вызвать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), если при сборе имён дисков произошла ошибка.17161717Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.listdrives` без аргументов.17181719[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows17201721Добавлено в версии 3.12.17221723#### `os.listmounts(volume)`17241725Возвращает список, содержащий точки монтирования для тома в системе Windows.17261727*volume* должен быть представлен как путь GUID, например, как те, что возвращаются [`os.listvolumes()`](https://python-all.ru/3.16/library/os.html#os.listvolumes). Тома могут быть смонтированы в нескольких местах или не смонтированы вовсе. В последнем случае список будет пуст. Точки монтирования, не связанные с томом, не будут возвращены этой функцией.17281729Точки монтирования, возвращаемые этой функцией, будут абсолютными путями и могут быть длиннее имени диска.17301731Вызывает [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), если том не распознан или если при сборе путей произошла ошибка.17321733Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.listmounts` с аргументом `volume`.17341735[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows17361737Добавлено в версии 3.12.17381739#### `os.listvolumes()`17401741Возвращает список, содержащий тома в системе.17421743Тома обычно представлены GUID-путем, который выглядит как `\\?\Volume{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}\`. Файлы обычно можно получить через GUID-путь, если разрешения позволяют. Однако пользователи, как правило, с ними не знакомы, поэтому рекомендуется использовать эту функцию для получения точек монтирования с помощью [`os.listmounts()`](https://python-all.ru/3.16/library/os.html#os.listmounts).17441745Может вызывать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), если при сборе томов произошла ошибка.17461747Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.listvolumes` без аргументов.17481749[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows17501751Добавлено в версии 3.12.17521753#### `os.lstat(path, *, dir_fd=None)`17541755Выполняет эквивалент системного вызова `lstat()` для указанного пути. Похоже на [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat), но не переходит по символическим ссылкам. Возвращает объект [`stat_result`](https://python-all.ru/3.16/library/os.html#os.stat_result).17561757На платформах, не поддерживающих символические ссылки, это псевдоним для [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat).17581759Начиная с Python 3.3, это эквивалентно `os.stat(path, dir_fd=dir_fd, follow_symlinks=False)`.17601761Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).17621763> **См. также**1764>1765> Функция [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat).17661767Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).17681769Изменено в версии 3.3: Добавлен параметр *dir\_fd*.17701771Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).17721773Изменено в версии 3.8: В Windows теперь открывает точки повторной обработки (reparse points), представляющие другой путь (суррогаты имени), включая символические ссылки и точки соединения каталогов. Другие типы точек повторной обработки разрешаются операционной системой как для [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat).17741775#### `os.mkdir(path, mode=0o777, *, dir_fd=None)`17761777Создаёт каталог с именем *path* и числовым режимом *mode*.17781779Если каталог уже существует, возникает [`FileExistsError`](https://python-all.ru/3.16/library/exceptions.html#FileExistsError). Если родительский каталог в пути не существует, возникает [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError).17801781На некоторых системах *mode* игнорируется. Если он используется, сначала применяется маска текущего umask. Если установлены биты, отличные от последних 9 (то есть последних 3 цифр восьмеричного представления *mode*), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать [`chmod()`](https://python-all.ru/3.16/library/os.html#os.chmod).17821783В Windows значение *mode*, равное `0o700`, обрабатывается особым образом: применяется управление доступом к новому каталогу так, что доступ имеют только текущий пользователь и администраторы. Другие значения *mode* игнорируются.17841785Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).17861787Также можно создавать временные каталоги; см. функцию [`tempfile.mkdtemp()`](https://python-all.ru/3.16/library/tempfile.html#tempfile.mkdtemp) модуля [`tempfile`](https://python-all.ru/3.16/library/tempfile.html#module-tempfile).17881789Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.mkdir` с аргументами `path`, `mode`, `dir_fd`.17901791Изменено в версии 3.3: Добавлен параметр *dir\_fd*.17921793Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).17941795Изменено в версии 3.13: В Windows теперь обрабатывается *mode*, равный `0o700`.17961797#### `os.makedirs(name, mode=0o777, exist_ok=False, *, parent_mode=None)`17981799Функция рекурсивного создания каталогов. Похожа на [`mkdir()`](https://python-all.ru/3.16/library/os.html#os.mkdir), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога.18001801Параметр *mode* передаётся в [`mkdir()`](https://python-all.ru/3.16/library/os.html#os.mkdir) для создания конечного каталога; см. [описание mkdir()](https://python-all.ru/3.16/library/os.html#mkdir-modebits), чтобы узнать, как он интерпретируется. Чтобы установить биты разрешений для любых вновь созданных родительских каталогов, можно установить umask перед вызовом `makedirs()`. Биты разрешений существующих родительских каталогов не изменяются.18021803Если *exist\_ok* равно `False` (по умолчанию), возникает [`FileExistsError`](https://python-all.ru/3.16/library/exceptions.html#FileExistsError), если целевой каталог уже существует.18041805If *parent\_mode* is not `None`, it is used as the mode for any newly-created, intermediate-level directories. Like *mode*, it is combined with the process’s umask value; see [the mkdir() description](https://python-all.ru/3.16/library/os.html#mkdir-modebits). Otherwise, intermediate directories are created with the default mode, which is also subject to the umask.18061807> **Примечание**1808>1809> `makedirs()` запутается, если элементы пути для создания включают [`pardir`](https://python-all.ru/3.16/library/os.html#os.pardir) (например, «..» в UNIX-системах).18101811Эта функция корректно обрабатывает UNC-пути.18121813Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.mkdir` с аргументами `path`, `mode`, `dir_fd`.18141815Изменено в версии 3.2: Добавлен параметр *exist\_ok*.18161817Изменено в версии 3.4.1: До Python 3.4.1, если *exist\_ok* было `True` и каталог существовал, `makedirs()` всё равно вызывал ошибку, если *mode* не совпадал с режимом существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. См. [bpo-21082](https://python-all.ru/3.16/library/os.html).18181819Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).18201821Изменено в версии 3.7: Аргумент *mode* больше не влияет на биты разрешений файлов вновь созданных промежуточных каталогов.18221823Добавлено в версии 3.15: Параметр *parent\_mode*. Чтобы поведение соответствовало Python 3.6 и более ранним версиям (где *mode* применялся ко всем создаваемым каталогам), передайте `parent_mode=mode`.18241825#### `os.mkfifo(path, mode=0o666, *, dir_fd=None)`18261827Создаёт FIFO (именованный канал) с именем *path* и числовым режимом *mode*. Значение текущего umask сначала вычитается из режима.18281829Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).18301831FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока их не удалят (например, с помощью [`os.unlink()`](https://python-all.ru/3.16/library/os.html#os.unlink)). Как правило, FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, что `mkfifo()` не открывает FIFO – он только создаёт точку встречи.18321833[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.18341835Изменено в версии 3.3: Добавлен параметр *dir\_fd*.18361837Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).18381839#### `os.mknod(path, mode=0o600, device=0, *, dir_fd=None)`18401841Создаёт узел файловой системы (файл, файл устройства или именованный канал) с именем *path*. *mode* задаёт как права доступа, так и тип создаваемого узла и комбинируется (побитовым ИЛИ) с одним из [`stat.S_IFREG`](https://python-all.ru/3.16/library/stat.html#stat.S_IFREG), [`stat.S_IFCHR`](https://python-all.ru/3.16/library/stat.html#stat.S_IFCHR), [`stat.S_IFBLK`](https://python-all.ru/3.16/library/stat.html#stat.S_IFBLK) и [`stat.S_IFIFO`](https://python-all.ru/3.16/library/stat.html#stat.S_IFIFO). Для `stat.S_IFCHR` и `stat.S_IFBLK` параметр *device* определяет вновь создаваемый специальный файл устройства (вероятно, с помощью [`os.makedev()`](https://python-all.ru/3.16/library/os.html#os.makedev)), в противном случае он игнорируется.18421843Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).18441845[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.18461847Изменено в версии 3.3: Добавлен параметр *dir\_fd*.18481849Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).18501851#### `os.major(device, /)`18521853Извлекает старший номер устройства из сырого номера устройства (обычно поля [`st_dev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_dev) или [`st_rdev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_rdev) из `stat`).18541855#### `os.minor(device, /)`18561857Извлекает младший номер устройства из сырого номера устройства (обычно поля [`st_dev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_dev) или [`st_rdev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_rdev) из `stat`).18581859#### `os.makedev(major, minor, /)`18601861Составляет сырой номер устройства из старшего и младшего номеров устройства.18621863#### `os.NODEV`18641865Несуществующее устройство.18661867Добавлено в версии 3.15.18681869#### `os.pathconf(path, name)`18701871Возвращает информацию о системной конфигурации для указанного файла. *name* задаёт запрашиваемое значение конфигурации; это может быть строка, содержащая имя определённого системного значения. Эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). На некоторых платформах могут быть также определены дополнительные имена. Имена, известные операционной системе, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это соответствие, допускается также передача целого числа в качестве *name*.18721873Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.16/library/errno.html#errno.EINVAL) в качестве кода ошибки.18741875Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd).18761877[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.18781879Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).18801881#### `os.pathconf_names`18821883Словарь, отображающий имена, принимаемые функциями [`pathconf()`](https://python-all.ru/3.16/library/os.html#os.pathconf) и [`fpathconf()`](https://python-all.ru/3.16/library/os.html#os.fpathconf), в целочисленные значения, определённые для этих имён хост-операционной системой. Его можно использовать для определения набора имён, известных системе.18841885[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.18861887#### `os.readlink(path, *, dir_fd=None)`18881889Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным путём; если он относительный, его можно преобразовать в абсолютный с помощью `os.path.join(os.path.dirname(path), result)`.18901891Если *path* – строковый объект (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)), результат также будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если *path* – объект bytes (напрямую или косвенно), результатом будет объект bytes.18921893Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).18941895При попытке разрешить путь, который может содержать ссылки, используйте [`realpath()`](https://python-all.ru/3.16/library/os.path.html#os.path.realpath) для корректной обработки рекурсии и различий платформ.18961897[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.18981899Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).19001901Изменено в версии 3.3: Добавлен параметр *dir\_fd*.19021903Изменено в версии 3.6: Принимает [path-подобный объект](https://python-all.ru/3.16/glossary.html#term-path-like-object) на Unix.19041905Изменено в версии 3.8: Принимает [path-подобный объект](https://python-all.ru/3.16/glossary.html#term-path-like-object) и объект bytes на Windows.19061907Добавлена поддержка точек соединения каталогов, и изменено поведение: теперь возвращается путь подстановки (который обычно включает префикс `\\?\`) вместо необязательного поля «отображаемое имя», которое возвращалось ранее.19081909#### `os.remove(path, *, dir_fd=None)`19101911Удаляет файл *path*. Если *path* является каталогом, возбуждается [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError). Для удаления каталогов используйте [`rmdir()`](https://python-all.ru/3.16/library/os.html#os.rmdir). Если файл не существует, возбуждается [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError).19121913Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).19141915В Windows попытка удалить файл, который используется, приводит к возбуждению исключения; в Unix запись в каталоге удаляется, но память, выделенная файлу, не освобождается, пока исходный файл не перестанет использоваться.19161917Эта функция семантически идентична [`unlink()`](https://python-all.ru/3.16/library/os.html#os.unlink).19181919Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.19201921Изменено в версии 3.3: Добавлен параметр *dir\_fd*.19221923Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).19241925#### `os.removedirs(name)`19261927Рекурсивно удаляет каталоги. Работает как [`rmdir()`](https://python-all.ru/3.16/library/os.html#os.rmdir), за исключением того, что если конечный каталог успешно удалён, `removedirs()` пытается последовательно удалить все родительские каталоги, указанные в *path*, пока не возникнет ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст). Например, `os.removedirs('foo/bar/baz')` сначала удалит каталог `'foo/bar/baz'`, а затем удалит `'foo/bar'` и `'foo'`, если они пусты. Возбуждает [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), если конечный каталог не удалось удалить.19281929Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.19301931Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).19321933#### `os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`19341935Переименовывает файл или каталог *src* в *dst*. Если *dst* существует, операция завершится неудачей с подклассом [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) в ряде случаев:19361937В Windows, если *dst* существует, всегда возбуждается [`FileExistsError`](https://python-all.ru/3.16/library/exceptions.html#FileExistsError). Операция может завершиться неудачей, если *src* и *dst* находятся в разных файловых системах. Используйте [`shutil.move()`](https://python-all.ru/3.16/library/shutil.html#shutil.move) для поддержки перемещения в другую файловую систему.19381939В Unix, если *src* – файл, а *dst* – каталог или наоборот, будет возбуждено [`IsADirectoryError`](https://python-all.ru/3.16/library/exceptions.html#IsADirectoryError) или [`NotADirectoryError`](https://python-all.ru/3.16/library/exceptions.html#NotADirectoryError) соответственно. Если оба являются каталогами и *dst* пуст, *dst* будет заменён без сообщения. Если *dst* – непустой каталог, возбуждается [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError). Если оба являются файлами, *dst* будет заменён без сообщения, если у пользователя есть разрешение. На некоторых разновидностях Unix операция может завершиться неудачей, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).19401941Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [путей, относительных к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).19421943Если требуется кроссплатформенная перезапись целевого объекта, используйте [`replace()`](https://python-all.ru/3.16/library/os.html#os.replace).19441945Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.19461947Изменено в версии 3.3: Добавлены параметры *src\_dir\_fd* и *dst\_dir\_fd*.19481949Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *src* и *dst*.19501951#### `os.renames(old, new)`19521953Функция рекурсивного переименования каталогов или файлов. Работает как [`rename()`](https://python-all.ru/3.16/library/os.html#os.rename), за исключением того, что сначала предпринимается попытка создать все промежуточные каталоги, необходимые для формирования нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, будут удалены с помощью [`removedirs()`](https://python-all.ru/3.16/library/os.html#os.removedirs).19541955> **Примечание**1956>1957> Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.19581959Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.19601961Изменено в версии 3.6: Теперь принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *old* и *new*.19621963#### `os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`19641965Переименовывает файл или каталог *src* в *dst*. Если *dst* – непустой каталог, будет возбуждено [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError). Если *dst* существует и является файлом, он будет заменён без сообщения, если у пользователя есть разрешение. Операция может завершиться неудачей, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).19661967Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [путей, относительных к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).19681969Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.19701971Добавлено в версии 3.3.19721973Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *src* и *dst*.19741975#### `os.rmdir(path, *, dir_fd=None)`19761977Удаляет каталог *path*. Если каталог не существует или не пуст, возбуждается [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError) или [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) соответственно. Для удаления целых деревьев каталогов можно использовать [`shutil.rmtree()`](https://python-all.ru/3.16/library/shutil.html#shutil.rmtree).19781979Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).19801981Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.rmdir` с аргументами `path`, `dir_fd`.19821983Изменено в версии 3.3: Добавлен параметр *dir\_fd*.19841985Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).19861987#### `os.scandir(path='.')`19881989Возвращает итератор объектов [`os.DirEntry`](https://python-all.ru/3.16/library/os.html#os.DirEntry), соответствующих записям в каталоге, заданном *path*. Записи возвращаются в произвольном порядке, а специальные записи `'.'` и `'..'` не включаются. Если файл был удалён или добавлен в каталог после создания итератора, не определено, будет ли включена запись для этого файла.19901991Использование `scandir()` вместо [`listdir()`](https://python-all.ru/3.16/library/os.html#os.listdir) может значительно повысить производительность кода, которому также требуется информация о типе файла или его атрибутах, поскольку объекты [`os.DirEntry`](https://python-all.ru/3.16/library/os.html#os.DirEntry) предоставляют эту информацию, если операционная система предоставляет её при сканировании каталога. Все методы `os.DirEntry` могут выполнять системный вызов, но [`is_dir()`](https://python-all.ru/3.16/library/os.html#os.DirEntry.is_dir) и [`is_file()`](https://python-all.ru/3.16/library/os.html#os.DirEntry.is_file) обычно требуют системного вызова только для символических ссылок; [`os.DirEntry.stat()`](https://python-all.ru/3.16/library/os.html#os.DirEntry.stat) всегда требует системного вызова в Unix, но в Windows – только для символических ссылок.19921993*path* может быть [объектом, подобным пути](https://python-all.ru/3.16/glossary.html#term-path-like-object). Если *path* имеет тип `bytes` (напрямую или через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)), то типом атрибутов [`name`](https://python-all.ru/3.16/library/os.html#os.DirEntry.name) и [`path`](https://python-all.ru/3.16/library/os.html#os.DirEntry.path) каждого [`os.DirEntry`](https://python-all.ru/3.16/library/os.html#os.DirEntry) будет `bytes`; во всех остальных случаях они будут иметь тип `str`.19941995Эта функция также может поддерживать [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd); файловый дескриптор должен ссылаться на каталог.19961997Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.scandir` с аргументом `path`.19981999Итератор `scandir()` поддерживает протокол [менеджера контекста](https://python-all.ru/3.16/glossary.html#term-context-manager) и имеет следующий метод:20002001#### `scandir.close()`20022003Закрывает итератор и освобождает занятые ресурсы.20042005Этот метод вызывается автоматически, когда итератор исчерпан или собран сборщиком мусора, или при возникновении ошибки во время итерации. Однако рекомендуется вызывать его явно или использовать инструкцию [`with`](https://python-all.ru/3.16/reference/compound_stmts.html#with).20062007Добавлено в версии 3.6.20082009Следующий пример демонстрирует простое использование `scandir()` для отображения всех файлов (кроме каталогов) в заданном *пути*, имена которых не начинаются с `'.'`. Вызов `entry.is_file()` обычно не требует дополнительного системного вызова:20102011```python2012with os.scandir(path) as it:2013    for entry in it:2014        if not entry.name.startswith('.') and entry.is_file():2015            print(entry.name)2016```20172018> **Примечание**2019>2020> В системах на базе Unix `scandir()` использует системные функции [opendir()](https://python-all.ru/3.16/library/os.html) и [readdir()](https://python-all.ru/3.16/library/os.html). В Windows используются функции Win32 [FindFirstFileW](https://python-all.ru/3.16/library/os.html) и [FindNextFileW](https://python-all.ru/3.16/library/os.html).20212022Добавлено в версии 3.5.20232024Изменено в версии 3.6: Добавлена поддержка протокола [менеджера контекста](https://python-all.ru/3.16/glossary.html#term-context-manager) и метода [`close()`](https://python-all.ru/3.16/library/os.html#os.scandir.close). Если итератор `scandir()` не был полностью израсходован или явно закрыт, в его деструкторе будет выдано [`ResourceWarning`](https://python-all.ru/3.16/library/exceptions.html#ResourceWarning).20252026Функция принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).20272028Изменено в версии 3.7: Добавлена поддержка [файловых дескрипторов](https://python-all.ru/3.16/library/os.html#path-fd) в Unix.20292030Изменено в версии 3.15: `os.scandir(-1)` теперь завершается ошибкой `OSError(errno.EBADF)` вместо вывода списка текущего каталога.20312032#### `class os.DirEntry`20332034Объект, возвращаемый [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) для предоставления пути к файлу и других атрибутов записи каталога.20352036[`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) предоставляет как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызов `stat()` или `lstat()`, объект `os.DirEntry` кэширует результат.20372038Экземпляры `os.DirEntry` не предназначены для хранения в долгоживущих структурах данных; если известно, что метаданные файла изменились или прошло много времени с момента вызова [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir), вызовите `os.stat(entry.path)`, чтобы получить актуальную информацию.20392040Поскольку методы `os.DirEntry` могут выполнять системные вызовы, они также могут возбуждать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError). Если требуется очень точный контроль над ошибками, можно перехватывать `OSError` при вызове одного из методов `os.DirEntry` и обрабатывать соответствующим образом.20412042Чтобы быть непосредственно используемым в качестве [объекта, подобного пути](https://python-all.ru/3.16/glossary.html#term-path-like-object), `os.DirEntry` реализует интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike).20432044Объекты `DirEntry` являются [дженериками](https://python-all.ru/3.16/library/typing.html#generics) по типу пути ([`str`](https://python-all.ru/3.16/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes)).20452046Атрибуты и методы экземпляра `os.DirEntry`:20472048#### `name`20492050Базовое имя файла записи, относительно [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) аргумента *path*.20512052Атрибут [`name`](https://python-all.ru/3.16/library/os.html#os.name) будет иметь значение `bytes`, если [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) аргумент *path* имеет тип `bytes`, и `str` в противном случае. Используйте [`fsdecode()`](https://python-all.ru/3.16/library/os.html#os.fsdecode) для декодирования байтовых имен файлов.20532054#### `path`20552056Имя пути записи: эквивалентно `os.path.join(scandir_path, entry.name)`, где *scandir\_path* – это исходный аргумент [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) *path*. Помимо имени файла, путь сохраняет исходный аргумент `scandir()`. Если аргумент `scandir()` *path* был относительным, атрибут [`path`](https://python-all.ru/3.16/library/os.path.html#module-os.path) также является относительным. Изменение текущего рабочего каталога после создания итератора `scandir()` может привести к тому, что последующие обращения к `path` будут разрешаться иначе. На некоторых платформах сформированный путь может быть недопустимым, если исходный аргумент `scandir()` был пригоден для перечисления, но не для объединения с именем записи. Если аргумент `scandir()` *path* был [файловым дескриптором](https://python-all.ru/3.16/library/os.html#path-fd), атрибут `path` совпадает с атрибутом [`name`](https://python-all.ru/3.16/library/os.html#os.name).20572058Атрибут [`path`](https://python-all.ru/3.16/library/os.path.html#module-os.path) будет иметь значение `bytes`, если [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) аргумент *path* имеет тип `bytes`, и `str` в противном случае. Используйте [`fsdecode()`](https://python-all.ru/3.16/library/os.html#os.fsdecode) для декодирования байтовых имен файлов.20592060#### `inode()`20612062Возвращает номер инода записи.20632064Результат кэшируется в объекте `os.DirEntry`. Используйте `os.stat(entry.path, follow_symlinks=False).st_ino` для получения актуальной информации.20652066При первом (некэшированном) вызове системный вызов требуется в Windows, но не в Unix.20672068#### `is_dir(*, follow_symlinks=True)`20692070Возвращает `True`, если эта запись является каталогом или символической ссылкой, указывающей на каталог; возвращает `False`, если запись является или указывает на любой другой тип файла, или если она больше не существует.20712072Если *follow\_symlinks* имеет значение `False`, возвращает `True`, только если эта запись является каталогом (без перехода по символическим ссылкам); возвращает `False`, если запись является файлом любого другого типа или если она больше не существует.20732074Результат кэшируется в объекте `os.DirEntry`, с отдельным кэшем для *follow\_symlinks* `True` и `False`. Вызовите [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat) вместе с [`stat.S_ISDIR()`](https://python-all.ru/3.16/library/stat.html#stat.S_ISDIR) для получения актуальной информации.20752076При первом (некэшированном) вызове системный вызов не требуется в большинстве случаев. В частности, для несимволических ссылок ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают `dirent.d_type == DT_UNKNOWN`. Если запись является символической ссылкой, системный вызов потребуется для перехода по ссылке, если только *follow\_symlinks* не равен `False`.20772078Этот метод может вызвать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), например [`PermissionError`](https://python-all.ru/3.16/library/exceptions.html#PermissionError), но [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError) перехватывается и не выбрасывается.20792080#### `is_file(*, follow_symlinks=True)`20812082Возвращает `True`, если эта запись является файлом или символической ссылкой, указывающей на файл; возвращает `False`, если запись является или указывает на каталог или другую запись, не являющуюся файлом, или если она больше не существует.20832084Если *follow\_symlinks* имеет значение `False`, возвращает `True`, только если эта запись является файлом (без перехода по символическим ссылкам); возвращает `False`, если запись является каталогом или другой записью, не являющейся файлом, или если она больше не существует.20852086Результат кэшируется в объекте `os.DirEntry`. Кэширование, выполненные системные вызовы и возникшие исключения обрабатываются в соответствии с [`is_dir()`](https://python-all.ru/3.16/library/os.html#os.DirEntry.is_dir).20872088#### `is_symlink()`20892090Возвращает `True`, если эта запись является символической ссылкой (даже битой); возвращает `False`, если запись указывает на каталог или любой файл, или если она больше не существует.20912092Результат кэшируется в объекте `os.DirEntry`. Вызовите [`os.path.islink()`](https://python-all.ru/3.16/library/os.path.html#os.path.islink), чтобы получить актуальную информацию.20932094При первом некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают `dirent.d_type == DT_UNKNOWN`.20952096Этот метод может вызвать [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), например [`PermissionError`](https://python-all.ru/3.16/library/exceptions.html#PermissionError), но [`FileNotFoundError`](https://python-all.ru/3.16/library/exceptions.html#FileNotFoundError) перехватывается и не выбрасывается.20972098#### `is_junction()`20992100Возвращает `True`, если эта запись является junction-точкой (даже битой); возвращает `False`, если запись указывает на обычный каталог, любой файл, символическую ссылку или если она больше не существует.21012102Результат кэшируется в объекте `os.DirEntry`. Вызовите [`os.path.isjunction()`](https://python-all.ru/3.16/library/os.path.html#os.path.isjunction), чтобы получить актуальную информацию.21032104Добавлено в версии 3.12.21052106#### `stat(*, follow_symlinks=True)`21072108Возвращает объект [`stat_result`](https://python-all.ru/3.16/library/os.html#os.stat_result) для этой записи. По умолчанию этот метод следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент `follow_symlinks=False`.21092110В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова, только если *follow\_symlinks* равен `True`, а запись является точкой повторной обработки (например, символической ссылкой или junction-точкой каталога).21112112В Windows атрибуты `st_ino`, `st_dev` и `st_nlink` объекта [`stat_result`](https://python-all.ru/3.16/library/os.html#os.stat_result) всегда равны нулю. Вызовите [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat), чтобы получить эти атрибуты.21132114Результат кэшируется в объекте `os.DirEntry`, с отдельным кэшем для *follow\_symlinks* `True` и `False`. Вызовите [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat), чтобы получить актуальную информацию.21152116Обратите внимание, что существует хорошее соответствие между несколькими атрибутами и методами `os.DirEntry` и [`pathlib.Path`](https://python-all.ru/3.16/library/pathlib.html#pathlib.Path). В частности, атрибут `name` имеет тот же смысл, что и методы `is_dir()`, `is_file()`, `is_symlink()`, `is_junction()` и `stat()`.21172118Добавлено в версии 3.5.21192120Изменено в версии 3.6: Добавлена поддержка интерфейса [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike). Добавлена поддержка путей [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes) в Windows.21212122Изменено в версии 3.12: Атрибут `st_ctime` результата stat признан устаревшим в Windows. Время создания файла правильно доступно как `st_birthtime`, и в будущем `st_ctime` может быть изменено для возврата нуля или времени изменения метаданных, если доступно.21232124#### `os.stat(path, *, dir_fd=None, follow_symlinks=True)`21252126Получить статус файла или файлового дескриптора. Выполняет эквивалент системного вызова `stat()` для заданного пути. *path* может быть задан как строка или байты – напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike) – или как открытый файловый дескриптор. Возвращает объект [`stat_result`](https://python-all.ru/3.16/library/os.html#os.stat_result).21272128Эта функция обычно следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент `follow_symlinks=False` или используйте [`lstat()`](https://python-all.ru/3.16/library/os.html#os.lstat).21292130Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).21312132В Windows передача `follow_symlinks=False` отключает следование всем surrogate-точкам повторной обработки, включая символические ссылки и junction-точки каталогов. Другие типы точек повторной обработки, не похожие на ссылки или которые операционная система не может обработать, будут открыты напрямую. При следовании по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая предотвратила полный обход. Чтобы получить результаты stat для конечного пути в этом случае, используйте функцию [`os.path.realpath()`](https://python-all.ru/3.16/library/os.path.html#os.path.realpath) для разрешения имени пути насколько это возможно и вызовите [`lstat()`](https://python-all.ru/3.16/library/os.html#os.lstat) для результата. Это не относится к битым символическим ссылкам или junction-точкам, которые вызывают обычные исключения.21332134Пример:21352136```python2137>>> import os2138>>> statinfo = os.stat('somefile.txt')2139>>> statinfo2140os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,2141st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,2142st_mtime=1297230027, st_ctime=1297230027)2143>>> statinfo.st_size21442642145```21462147> **См. также**2148>2149> Функции [`fstat()`](https://python-all.ru/3.16/library/os.html#os.fstat) и [`lstat()`](https://python-all.ru/3.16/library/os.html#os.lstat).21502151Изменено в версии 3.3: Добавлены параметры *dir\_fd* и *follow\_symlinks*, позволяющие указать файловый дескриптор вместо пути.21522153Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).21542155Изменено в версии 3.8: В Windows теперь обрабатываются все точки повторной обработки, которые может разрешить операционная система, а передача `follow_symlinks=False` отключает следование всем surrogate-точкам повторной обработки. Если операционная система достигает точки повторной обработки, которую не может обработать, *stat* теперь возвращает информацию для исходного пути, как если бы был указан `follow_symlinks=False`, вместо вызова ошибки.21562157#### `class os.stat_result`21582159Объект, атрибуты которого примерно соответствуют членам структуры `stat`. Используется для результата [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.16/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.16/library/os.html#os.lstat).21602161Атрибуты:21622163#### `st_mode`21642165Режим файла: тип файла и биты режима (права доступа).21662167#### `st_ino`21682169Зависит от платформы, но если не равно нулю, однозначно идентифицирует файл для заданного значения `st_dev`. Обычно:21702171- номер inode в Unix,2172- [индекс файла](https://python-all.ru/3.16/library/os.html) на Windows21732174#### `st_dev`21752176Идентификатор устройства, на котором находится этот файл.21772178#### `st_nlink`21792180Количество жёстких ссылок.21812182#### `st_uid`21832184Идентификатор пользователя-владельца файла.21852186#### `st_gid`21872188Идентификатор группы владельца файла.21892190#### `st_size`21912192Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.21932194Временные метки:21952196#### `st_atime`21972198Время последнего доступа, выраженное в секундах.21992200#### `st_mtime`22012202Время последнего изменения содержимого, выраженное в секундах.22032204#### `st_ctime`22052206Время последнего изменения метаданных, выраженное в секундах.22072208Изменено в версии 3.12: `st_ctime` устарело на Windows. Используйте `st_birthtime` для времени создания файла. В будущем `st_ctime` будет содержать время последнего изменения метаданных, как на других платформах.22092210#### `st_atime_ns`22112212Время последнего доступа, выраженное в наносекундах в виде целого числа.22132214Добавлено в версии 3.3.22152216#### `st_mtime_ns`22172218Время последнего изменения содержимого, выраженное в наносекундах в виде целого числа.22192220Добавлено в версии 3.3.22212222#### `st_ctime_ns`22232224Время последнего изменения метаданных, выраженное в наносекундах в виде целого числа.22252226Добавлено в версии 3.3.22272228Изменено в версии 3.12: `st_ctime_ns` устарело на Windows. Используйте `st_birthtime_ns` для времени создания файла. В будущем `st_ctime` будет содержать время последнего изменения метаданных, как на других платформах.22292230#### `st_birthtime`22312232Время создания файла, выраженное в секундах. Этот атрибут доступен не всегда и может вызвать [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError).22332234Изменено в версии 3.12: `st_birthtime` теперь доступен на Windows.22352236#### `st_birthtime_ns`22372238Время создания файла, выраженное в наносекундах в виде целого числа. Этот атрибут доступен не всегда и может вызвать [`AttributeError`](https://python-all.ru/3.16/library/exceptions.html#AttributeError).22392240Добавлено в версии 3.12.22412242> **Примечание**2243>2244> Точный смысл и разрешение атрибутов [`st_atime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mtime), [`st_ctime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ctime) и [`st_birthtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_birthtime) зависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловую систему FAT32, `st_mtime` имеет разрешение 2 секунды, а `st_atime` – только 1 день. Подробнее см. документацию вашей операционной системы.2245>2246> Аналогично, хотя [`st_atime_ns`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mtime_ns), [`st_ctime_ns`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ctime_ns) и [`st_birthtime_ns`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_birthtime_ns) всегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, которые её обеспечивают, объект с плавающей запятой, используемый для хранения [`st_atime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mtime), [`st_ctime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ctime) и [`st_birthtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_birthtime), не может сохранить её полностью, и поэтому будет слегка неточным. Если вам нужны точные временные метки, всегда используйте `st_atime_ns`, `st_mtime_ns`, `st_ctime_ns` и `st_birthtime_ns`.22472248В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:22492250#### `st_blocks`22512252Количество 512-байтовых блоков, выделенных файлу. Может быть меньше [`st_size`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_size)/512, если в файле есть дырки (holes).22532254#### `st_blksize`22552256«Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).22572258#### `st_rdev`22592260Тип устройства, если inode является устройством.22612262#### `st_flags`22632264Определённые пользователем флаги для файла.22652266В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):22672268#### `st_gen`22692270Номер поколения файла.22712272В Solaris и производных системах также могут быть доступны следующие атрибуты:22732274#### `st_fstype`22752276Строка, уникально идентифицирующая тип файловой системы, содержащей файл.22772278В системах macOS также могут быть доступны следующие атрибуты:22792280#### `st_rsize`22812282Реальный размер файла.22832284#### `st_creator`22852286Создатель файла.22872288#### `st_type`22892290Тип файла.22912292В системах Windows также доступны следующие атрибуты:22932294#### `st_file_attributes`22952296Атрибуты файла Windows: член `dwFileAttributes` структуры `BY_HANDLE_FILE_INFORMATION`, возвращаемой функцией `GetFileInformationByHandle()`. Обратитесь к константам `FILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>` из модуля [`stat`](https://python-all.ru/3.16/library/stat.html#module-stat).22972298Добавлено в версии 3.5.22992300#### `st_reparse_tag`23012302Когда у [`st_file_attributes`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_file_attributes) установлен [`FILE_ATTRIBUTE_REPARSE_POINT`](https://python-all.ru/3.16/library/stat.html#stat.FILE_ATTRIBUTE_REPARSE_POINT), это поле содержит тег, идентифицирующий тип точки повторного анализа (reparse point). Обратитесь к константам [`IO_REPARSE_TAG_*`](https://python-all.ru/3.16/library/stat.html#stat.IO_REPARSE_TAG_SYMLINK) из модуля [`stat`](https://python-all.ru/3.16/library/stat.html#module-stat).23032304Стандартный модуль [`stat`](https://python-all.ru/3.16/library/stat.html#module-stat) определяет функции и константы, полезные для извлечения информации из структуры `stat`. (В Windows некоторые поля заполняются фиктивными значениями.)23052306Для обратной совместимости экземпляр `stat_result` также доступен как кортеж из как минимум 10 целых чисел, представляющих наиболее важные (и переносимые) члены структуры `stat`, в порядке [`st_mode`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mode), [`st_ino`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ino), [`st_dev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_dev), [`st_nlink`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_nlink), [`st_uid`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_uid), [`st_gid`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_gid), [`st_size`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_size), [`st_atime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mtime), [`st_ctime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ctime). Некоторые реализации могут добавлять больше элементов в конец. Для совместимости со старыми версиями Python обращение к `stat_result` как к кортежу всегда возвращает целые числа.23072308Изменено в версии 3.5: Windows теперь возвращает индекс файла как [`st_ino`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ino), если он доступен.23092310Изменено в версии 3.7: Добавлен элемент [`st_fstype`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_fstype) для Solaris и его производных.23112312Изменено в версии 3.8: Добавлен элемент [`st_reparse_tag`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_reparse_tag) в Windows.23132314Изменено в версии 3.8: В Windows атрибут [`st_mode`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_mode) теперь определяет специальные файлы как [`S_IFCHR`](https://python-all.ru/3.16/library/stat.html#stat.S_IFCHR), [`S_IFIFO`](https://python-all.ru/3.16/library/stat.html#stat.S_IFIFO) или [`S_IFBLK`](https://python-all.ru/3.16/library/stat.html#stat.S_IFBLK) в зависимости от ситуации.23152316Изменено в версии 3.12: В Windows [`st_ctime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ctime) устарел. В конечном итоге он будет содержать время последнего изменения метаданных для согласованности с другими платформами, но пока ещё содержит время создания. Используйте [`st_birthtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_birthtime) для времени создания.23172318В Windows [`st_ino`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_ino) теперь может быть до 128 бит, в зависимости от файловой системы. Ранее он не превышал 64 бит, а более длинные идентификаторы файлов упаковывались произвольным образом.23192320В Windows [`st_rdev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_rdev) больше не возвращает значение. Ранее он содержал то же, что и [`st_dev`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_dev), что было некорректно.23212322Добавлен элемент [`st_birthtime`](https://python-all.ru/3.16/library/os.html#os.stat_result.st_birthtime) в Windows.23232324#### `os.statx(path, mask, *, flags=0, dir_fd=None, follow_symlinks=True)`23252326Получает статус файла или файлового дескриптора, выполняя системный вызов `statx()` для указанного пути.23272328*path* – это [путеподобный объект](https://python-all.ru/3.16/glossary.html#term-path-like-object) или открытый файловый дескриптор. *mask* – это комбинация констант уровня модуля [`STATX_*`](https://python-all.ru/3.16/library/os.html#os.STATX_TYPE), указывающая, какую информацию нужно получить. *flags* – это комбинация констант уровня модуля [`AT_STATX_*`](https://python-all.ru/3.16/library/os.html#os.AT_STATX_FORCE_SYNC) и/или [`AT_NO_AUTOMOUNT`](https://python-all.ru/3.16/library/os.html#os.AT_NO_AUTOMOUNT). Возвращает объект [`statx_result`](https://python-all.ru/3.16/library/os.html#os.statx_result), чей атрибут [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask) содержит информацию, фактически полученную (может отличаться от *mask*).23292330Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd), а также [отказ от перехода по символьным ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).23312332> **См. также**2333>2334> Справочная страница man для *[statx(2)](https://python-all.ru/3.16/library/os.html)*.23352336[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11, glibc \>= 2.28.23372338Добавлено в версии 3.15.23392340#### `class os.statx_result`23412342Информация о файле, возвращаемая [`os.statx()`](https://python-all.ru/3.16/library/os.html#os.statx).23432344`statx_result` имеет следующие атрибуты:23452346#### `stx_atime`23472348Время последнего доступа, выраженное в секундах.23492350Равно `None`, если [`STATX_ATIME`](https://python-all.ru/3.16/library/os.html#os.STATX_ATIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23512352#### `stx_atime_ns`23532354Время последнего доступа, выраженное в наносекундах в виде целого числа.23552356Равно `None`, если [`STATX_ATIME`](https://python-all.ru/3.16/library/os.html#os.STATX_ATIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23572358#### `stx_atomic_write_segments_max`23592360Максимальное количество iovecs для прямого ввода-вывода с защитой от разорванной записи.23612362Равно `None`, если [`STATX_WRITE_ATOMIC`](https://python-all.ru/3.16/library/os.html#os.STATX_WRITE_ATOMIC) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23632364[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11, glibc \>= 2.28 и заголовки API пространства пользователя ядра времени сборки \>= 6.11.23652366#### `stx_atomic_write_unit_max`23672368Максимальный размер для прямого ввода-вывода с защитой от разорванной записи.23692370Равно `None`, если [`STATX_WRITE_ATOMIC`](https://python-all.ru/3.16/library/os.html#os.STATX_WRITE_ATOMIC) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23712372[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11, glibc \>= 2.28 и заголовки API пространства пользователя ядра времени сборки \>= 6.11.23732374#### `stx_atomic_write_unit_max_opt`23752376Максимальный оптимизированный размер для прямого ввода-вывода с защитой от разорванной записи.23772378Равно `None`, если [`STATX_WRITE_ATOMIC`](https://python-all.ru/3.16/library/os.html#os.STATX_WRITE_ATOMIC) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23792380[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11, glibc \>= 2.28 и заголовки API пространства пользователя ядра времени сборки \>= 6.16.23812382#### `stx_atomic_write_unit_min`23832384Минимальный размер для прямого ввода-вывода с защитой от разорванной записи.23852386Равно `None`, если [`STATX_WRITE_ATOMIC`](https://python-all.ru/3.16/library/os.html#os.STATX_WRITE_ATOMIC) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).23872388[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11, glibc \>= 2.28 и заголовки API пространства пользователя ядра времени сборки \>= 6.11.23892390#### `stx_attributes`23912392Битовая маска констант [`STATX_ATTR_*`](https://python-all.ru/3.16/library/stat.html#stat.STATX_ATTR_COMPRESSED), указывающих атрибуты этого файла.23932394#### `stx_attributes_mask`23952396Маска, указывающая, какие биты в [`stx_attributes`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_attributes) поддерживаются VFS и файловой системой.23972398#### `stx_blksize`23992400«Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).24012402#### `stx_blocks`24032404Количество 512-байтовых блоков, выделенных файлу. Может быть меньше [`stx_size`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_size)/512, если в файле есть дырки (holes).24052406Равно `None`, если [`STATX_BLOCKS`](https://python-all.ru/3.16/library/os.html#os.STATX_BLOCKS) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24072408#### `stx_btime`24092410Время создания файла, выраженное в секундах.24112412Равно `None`, если [`STATX_BTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_BTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24132414#### `stx_btime_ns`24152416Время создания файла, выраженное в наносекундах в виде целого числа.24172418Равно `None`, если [`STATX_BTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_BTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24192420#### `stx_ctime`24212422Время последнего изменения метаданных, выраженное в секундах.24232424Равно `None`, если [`STATX_CTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_CTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24252426#### `stx_ctime_ns`24272428Время последнего изменения метаданных, выраженное в наносекундах в виде целого числа.24292430Равно `None`, если [`STATX_CTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_CTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24312432#### `stx_dev`24332434Идентификатор устройства, на котором находится этот файл.24352436#### `stx_dev_major`24372438Старший номер устройства, на котором находится этот файл.24392440#### `stx_dev_minor`24412442Младший номер устройства, на котором находится этот файл.24432444#### `stx_dio_mem_align`24452446Требование выравнивания буфера памяти для прямого ввода-вывода.24472448Равно `None`, если [`STATX_DIOALIGN`](https://python-all.ru/3.16/library/os.html#os.STATX_DIOALIGN) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24492450[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28 и заголовочными файлами API пользовательского пространства ядра (время сборки) \>= 6.1.24512452#### `stx_dio_offset_align`24532454Требование выравнивания смещения файла для прямого ввода-вывода.24552456Равно `None`, если [`STATX_DIOALIGN`](https://python-all.ru/3.16/library/os.html#os.STATX_DIOALIGN) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24572458[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28 и заголовочными файлами API пользовательского пространства ядра (время сборки) \>= 6.1.24592460#### `stx_dio_read_offset_align`24612462Требование выравнивания смещения файла для прямого ввода-вывода при чтении.24632464Равно `None`, если [`STATX_DIO_READ_ALIGN`](https://python-all.ru/3.16/library/os.html#os.STATX_DIO_READ_ALIGN) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24652466[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28 и заголовочными файлами API пользовательского пространства ядра (время сборки) \>= 6.14.24672468#### `stx_gid`24692470Идентификатор группы владельца файла.24712472Равно `None`, если [`STATX_GID`](https://python-all.ru/3.16/library/os.html#os.STATX_GID) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24732474#### `stx_ino`24752476Номер inode.24772478Равно `None`, если [`STATX_INO`](https://python-all.ru/3.16/library/os.html#os.STATX_INO) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24792480#### `stx_mask`24812482Битовая маска констант [`STATX_*`](https://python-all.ru/3.16/library/os.html#os.STATX_TYPE), определяющая полученную информацию; она может отличаться от запрошенной.24832484#### `stx_mnt_id`24852486Идентификатор точки монтирования.24872488Равно `None`, если [`STATX_MNT_ID`](https://python-all.ru/3.16/library/os.html#os.STATX_MNT_ID) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24892490[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28 и заголовками API пространства пользователя ядра времени сборки \>= 5.8.24912492#### `stx_mode`24932494Режим файла: тип файла и биты режима (права доступа).24952496Равно `None`, если [`STATX_TYPE | STATX_MODE`](https://python-all.ru/3.16/library/os.html#os.STATX_TYPE) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).24972498#### `stx_mtime`24992500Время последнего изменения содержимого, выраженное в секундах.25012502Равно `None`, если [`STATX_MTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_MTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25032504#### `stx_mtime_ns`25052506Время последнего изменения содержимого, выраженное в наносекундах в виде целого числа.25072508Равно `None`, если [`STATX_MTIME`](https://python-all.ru/3.16/library/os.html#os.STATX_MTIME) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25092510#### `stx_nlink`25112512Количество жёстких ссылок.25132514Равно `None`, если [`STATX_NLINK`](https://python-all.ru/3.16/library/os.html#os.STATX_NLINK) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25152516#### `stx_rdev`25172518Тип устройства, если inode является устройством.25192520#### `stx_rdev_major`25212522Старший номер устройства, которое представляет этот файл.25232524#### `stx_rdev_minor`25252526Младший номер устройства, которое представляет этот файл.25272528#### `stx_size`25292530Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.25312532Равно `None`, если [`STATX_SIZE`](https://python-all.ru/3.16/library/os.html#os.STATX_SIZE) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25332534#### `stx_subvol`25352536Идентификатор подтома.25372538Равно `None`, если [`STATX_SUBVOL`](https://python-all.ru/3.16/library/os.html#os.STATX_SUBVOL) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25392540[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28 и заголовками API пространства пользователя ядра времени сборки \>= 6.10.25412542#### `stx_uid`25432544Идентификатор пользователя-владельца файла.25452546Равно `None`, если [`STATX_UID`](https://python-all.ru/3.16/library/os.html#os.STATX_UID) отсутствует в [`stx_mask`](https://python-all.ru/3.16/library/os.html#os.statx_result.stx_mask).25472548> **См. также**2549>2550> Справочная страница man *[statx(2)](https://python-all.ru/3.16/library/os.html)*.25512552[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28.25532554Добавлено в версии 3.15.25552556#### `os.STATX_TYPE`25572558#### `os.STATX_MODE`25592560#### `os.STATX_NLINK`25612562#### `os.STATX_UID`25632564#### `os.STATX_GID`25652566#### `os.STATX_ATIME`25672568#### `os.STATX_MTIME`25692570#### `os.STATX_CTIME`25712572#### `os.STATX_INO`25732574#### `os.STATX_SIZE`25752576#### `os.STATX_BLOCKS`25772578#### `os.STATX_BASIC_STATS`25792580#### `os.STATX_BTIME`25812582#### `os.STATX_MNT_ID`25832584#### `os.STATX_DIOALIGN`25852586#### `os.STATX_MNT_ID_UNIQUE`25872588#### `os.STATX_SUBVOL`25892590#### `os.STATX_WRITE_ATOMIC`25912592#### `os.STATX_DIO_READ_ALIGN`25932594Битовые флаги для использования в параметре *mask* функции [`os.statx()`](https://python-all.ru/3.16/library/os.html#os.statx). Некоторые из этих флагов могут быть доступны, даже если соответствующие им члены в [`statx_result`](https://python-all.ru/3.16/library/os.html#os.statx_result) недоступны.25952596[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28.25972598Добавлено в версии 3.15.25992600#### `os.AT_STATX_FORCE_SYNC`26012602Флаг для функции [`os.statx()`](https://python-all.ru/3.16/library/os.html#os.statx). Запрашивает у ядра возврат актуальной информации, даже если это обходится дорого (например, требует обращения к серверу для файла в сетевой файловой системе).26032604[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28.26052606Добавлено в версии 3.15.26072608#### `os.AT_STATX_DONT_SYNC`26092610Флаг для функции [`os.statx()`](https://python-all.ru/3.16/library/os.html#os.statx). Запрашивает у ядра возврат кэшированной информации, если это возможно.26112612[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28.26132614Добавлено в версии 3.15.26152616#### `os.AT_STATX_SYNC_AS_STAT`26172618Флаг для функции [`os.statx()`](https://python-all.ru/3.16/library/os.html#os.statx). Этот флаг определён как `0`, поэтому он не оказывает эффекта, но его можно использовать для явного указания, что не передаётся ни [`AT_STATX_FORCE_SYNC`](https://python-all.ru/3.16/library/os.html#os.AT_STATX_FORCE_SYNC), ни [`AT_STATX_DONT_SYNC`](https://python-all.ru/3.16/library/os.html#os.AT_STATX_DONT_SYNC). При отсутствии двух других флагов ядро обычно возвращает информацию, такую же свежую, какую вернул бы вызов [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat).26192620[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 4.11 с glibc \>= 2.28.26212622Добавлено в версии 3.15.26232624#### `os.AT_NO_AUTOMOUNT`26252626Если последний компонент пути является точкой автомонтирования, действовать на точку автомонтирования, а не выполнять автомонтирование. В Linux [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.16/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.16/library/os.html#os.lstat) всегда ведут себя таким образом.26272628[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.26292630Добавлено в версии 3.15.26312632#### `os.statvfs(path)`26332634Выполняет системный вызов *[statvfs(3)](https://python-all.ru/3.16/library/os.html)* для указанного пути. Возвращаемое значение – [`statvfs_result`](https://python-all.ru/3.16/library/os.html#os.statvfs_result), чьи атрибуты описывают файловую систему на указанном пути и соответствуют элементам структуры `statvfs`.26352636Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd).26372638[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.26392640Изменено в версии 3.3: Добавлена поддержка указания *path* в качестве открытого файлового дескриптора.26412642Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).26432644#### `class os.statvfs_result`26452646Статистика файловой системы, возвращаемая [`os.statvfs()`](https://python-all.ru/3.16/library/os.html#os.statvfs) и [`os.fstatvfs()`](https://python-all.ru/3.16/library/os.html#os.fstatvfs). Подробнее см. *[statvfs(3)](https://python-all.ru/3.16/library/os.html)*.26472648#### `f_bsize`26492650Размер блока.26512652#### `f_frsize`26532654Размер фрагмента.26552656#### `f_blocks`26572658Количество блоков размером [`f_frsize`](https://python-all.ru/3.16/library/os.html#os.statvfs_result.f_frsize), которое может содержать файловая система.26592660#### `f_bfree`26612662Количество свободных блоков.26632664#### `f_bavail`26652666Количество свободных блоков для непривилегированных пользователей.26672668#### `f_files`26692670Количество файловых записей (inodes), которое может содержать файловая система.26712672#### `f_ffree`26732674Количество свободных файловых записей.26752676#### `f_favail`26772678Количество свободных файловых записей для непривилегированных пользователей.26792680#### `f_flag`26812682Битовая маска флагов монтирования. Определены следующие флаги: [`ST_RDONLY`](https://python-all.ru/3.16/library/os.html#os.ST_RDONLY), [`ST_NOSUID`](https://python-all.ru/3.16/library/os.html#os.ST_NOSUID), [`ST_NODEV`](https://python-all.ru/3.16/library/os.html#os.ST_NODEV), [`ST_NOEXEC`](https://python-all.ru/3.16/library/os.html#os.ST_NOEXEC), [`ST_SYNCHRONOUS`](https://python-all.ru/3.16/library/os.html#os.ST_SYNCHRONOUS), [`ST_MANDLOCK`](https://python-all.ru/3.16/library/os.html#os.ST_MANDLOCK), [`ST_WRITE`](https://python-all.ru/3.16/library/os.html#os.ST_WRITE), [`ST_APPEND`](https://python-all.ru/3.16/library/os.html#os.ST_APPEND), [`ST_IMMUTABLE`](https://python-all.ru/3.16/library/os.html#os.ST_IMMUTABLE), [`ST_NOATIME`](https://python-all.ru/3.16/library/os.html#os.ST_NOATIME), [`ST_NODIRATIME`](https://python-all.ru/3.16/library/os.html#os.ST_NODIRATIME) и [`ST_RELATIME`](https://python-all.ru/3.16/library/os.html#os.ST_RELATIME).26832684#### `f_namemax`26852686Максимальная длина имени файла в файловой системе. Могут существовать ограничения, зависящие от ОС, такие как [Windows MAX\_PATH](https://python-all.ru/3.16/using/windows.html#max-path) и описанные в Linux *[pathname(7)](https://python-all.ru/3.16/library/os.html)*.26872688#### `f_fsid`26892690Идентификатор файловой системы.26912692Добавлено в версии 3.7.26932694Следующие флаги используются в [`statvfs_result.f_flag`](https://python-all.ru/3.16/library/os.html#os.statvfs_result.f_flag).26952696#### `os.ST_RDONLY`26972698Файловая система только для чтения.26992700Добавлено в версии 3.2.27012702#### `os.ST_NOSUID`27032704Биты setuid/setgid отключены или не поддерживаются.27052706Добавлено в версии 3.2.27072708#### `os.ST_NODEV`27092710Запретить доступ к специальным файлам устройств.27112712[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27132714Добавлено в версии 3.4.27152716#### `os.ST_NOEXEC`27172718Запретить выполнение программ.27192720[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27212722Добавлено в версии 3.4.27232724#### `os.ST_SYNCHRONOUS`27252726Записи синхронизируются немедленно.27272728[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27292730Добавлено в версии 3.4.27312732#### `os.ST_MANDLOCK`27332734Разрешить принудительные блокировки в файловой системе.27352736[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27372738Добавлено в версии 3.4.27392740#### `os.ST_WRITE`27412742Запись в файл/каталог/симлинк.27432744[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27452746Добавлено в версии 3.4.27472748#### `os.ST_APPEND`27492750Файл только для добавления.27512752[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27532754Добавлено в версии 3.4.27552756#### `os.ST_IMMUTABLE`27572758Неизменяемый файл.27592760[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27612762Добавлено в версии 3.4.27632764#### `os.ST_NOATIME`27652766Не обновлять время доступа.27672768[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27692770Добавлено в версии 3.4.27712772#### `os.ST_NODIRATIME`27732774Не обновлять время доступа к каталогу.27752776[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27772778Добавлено в версии 3.4.27792780#### `os.ST_RELATIME`27812782Обновляет atime относительно mtime/ctime.27832784[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux.27852786Добавлено в версии 3.4.27872788#### `os.supports_dir_fd`27892790Объект [`set`](https://python-all.ru/3.16/library/stdtypes.html#set), указывающий, какие функции в модуле `os` принимают открытый файловый дескриптор для своего параметра *dir\_fd*. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации параметра *dir\_fd*, доступна не на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать *dir\_fd*, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (Указание `None` для *dir\_fd* всегда поддерживается на всех платформах.)27912792Чтобы проверить, принимает ли конкретная функция открытый файловый дескриптор для своего параметра *dir\_fd*, используйте оператор `in` на `supports_dir_fd`. Например, это выражение вычисляется в `True`, если [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat) принимает открытые файловые дескрипторы для *dir\_fd* на локальной платформе:27932794```python2795os.stat in os.supports_dir_fd2796```27972798В настоящее время параметры *dir\_fd* работают только на платформах Unix; ни один из них не работает на Windows.27992800Добавлено в версии 3.3.28012802#### `os.supports_effective_ids`28032804Объект [`set`](https://python-all.ru/3.16/library/stdtypes.html#set), указывающий, разрешает ли [`os.access()`](https://python-all.ru/3.16/library/os.html#os.access) указывать `True` для своего параметра *effective\_ids* на локальной платформе. (Указание `False` для *effective\_ids* всегда поддерживается на всех платформах.) Если локальная платформа это поддерживает, коллекция будет содержать `os.access()`; в противном случае она будет пуста.28052806Это выражение вычисляется в `True`, если [`os.access()`](https://python-all.ru/3.16/library/os.html#os.access) поддерживает `effective_ids=True` на локальной платформе:28072808```python2809os.access in os.supports_effective_ids2810```28112812В настоящее время *effective\_ids* поддерживается только на платформах Unix; он не работает на Windows.28132814Добавлено в версии 3.3.28152816#### `os.supports_fd`28172818Объект [`set`](https://python-all.ru/3.16/library/stdtypes.html#set), указывающий, какие функции в модуле `os` разрешают указывать свой параметр *path* как открытый файловый дескриптор на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для принятия открытых файловых дескрипторов в качестве аргументов *path*, доступна не на всех платформах, поддерживаемых Python.28192820Чтобы определить, разрешает ли конкретная функция указывать открытый файловый дескриптор для своего параметра *path*, используйте оператор `in` на `supports_fd`. Например, это выражение вычисляется в `True`, если [`os.chdir()`](https://python-all.ru/3.16/library/os.html#os.chdir) принимает открытые файловые дескрипторы для *path* на локальной платформе:28212822```python2823os.chdir in os.supports_fd2824```28252826Добавлено в версии 3.3.28272828#### `os.supports_follow_symlinks`28292830Объект [`set`](https://python-all.ru/3.16/library/stdtypes.html#set), указывающий, какие функции в модуле `os` принимают `False` для своего параметра *follow\_symlinks* на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации *follow\_symlinks*, недоступна на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать *follow\_symlinks*, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (Указание `True` для *follow\_symlinks* всегда поддерживается на всех платформах.)28312832Чтобы проверить, принимает ли конкретная функция `False` для своего параметра *follow\_symlinks*, используйте оператор `in` на `supports_follow_symlinks`. Например, это выражение вычисляется в `True`, если вы можете указать `follow_symlinks=False` при вызове [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat) на локальной платформе:28332834```python2835os.stat in os.supports_follow_symlinks2836```28372838Добавлено в версии 3.3.28392840#### `os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)`28412842Создает символическую ссылку, указывающую на *src* с именем *dst*.28432844Параметр *src* относится к цели ссылки (файлу или каталогу, на который указывает ссылка), а *dst* – это имя создаваемой ссылки.28452846В Windows символическая ссылка представляет собой либо файл, либо каталог и не изменяется динамически под цель. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если *target\_is\_directory* равен `True`, или как файловая ссылка (по умолчанию) в противном случае. На платформах, отличных от Windows, параметр *target\_is\_directory* игнорируется.28472848Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.16/library/os.html#dir-fd).28492850> **Примечание**2851>2852> В новых версиях Windows 10 непривилегированные учетные записи могут создавать символические ссылки, если включен режим разработчика. Если режим разработчика недоступен или не включен, требуется привилегия *SeCreateSymbolicLinkPrivilege*, или процесс должен быть запущен от имени администратора.2853>2854> [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) возникает, когда функция вызывается непривилегированным пользователем.28552856Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.symlink` с аргументами `src`, `dst`, `dir_fd`.28572858[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.28592860Эта функция ограничена на WASI; см. [платформы WebAssembly](https://python-all.ru/3.16/library/intro.html#wasm-availability) для получения дополнительной информации.28612862Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).28632864Изменено в версии 3.3: Добавлен параметр *dir\_fd* и теперь разрешено *target\_is\_directory* на платформах, отличных от Windows.28652866Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *src* и *dst*.28672868Изменено в версии 3.8: Добавлена поддержка непривилегированных символических ссылок в Windows с режимом разработчика.28692870#### `os.sync()`28712872Принудительная запись всех данных на диск.28732874[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.28752876Добавлено в версии 3.3.28772878#### `os.truncate(path, length)`28792880Усекает файл, соответствующий *path*, так, чтобы его размер не превышал *length* байт.28812882Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd).28832884Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.truncate` с аргументами `path`, `length`.28852886[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.28872888Добавлено в версии 3.3.28892890Изменено в версии 3.5: Добавлена поддержка Windows28912892Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).28932894#### `os.unlink(path, *, dir_fd=None)`28952896Удаляет файл *path*. Эта функция семантически идентична [`remove()`](https://python-all.ru/3.16/library/os.html#os.remove); имя `unlink` – это её традиционное имя в Unix. Подробнее см. документацию `remove()`.28972898Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.28992900Изменено в версии 3.3: Добавлен параметр *dir\_fd*.29012902Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).29032904#### `os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)`29052906Устанавливает время доступа и изменения файла, указанного в *path*.29072908`utime()` принимает два необязательных параметра: *times* и *ns*. Они задают время, устанавливаемое для *path*, и используются следующим образом:29092910- Если указан *ns*, то это должен быть кортеж из двух элементов вида `(atime_ns, mtime_ns)`, где каждый элемент – целое число, выражающее наносекунды.2911- Если *times* не равно `None`, он должен представлять собой кортеж из двух элементов вида `(atime, mtime)`, где каждый элемент – это вещественное число, выражающее секунды, с округлением вниз до наносекунд.2912- Если *times* равен `None`, а *ns* не указан, то это эквивалентно указанию `ns=(atime_ns, mtime_ns)`, где оба времени равны текущему времени.29132914Указывать кортежи одновременно для *times* и *ns* – ошибка.29152916Обратите внимание, что точные времена, установленные здесь, могут не возвращаться последующим вызовом [`stat()`](https://python-all.ru/3.16/library/os.html#os.stat) в зависимости от разрешения, с которым ваша операционная система записывает время доступа и изменения; см. `stat()`. Лучший способ сохранить точные времена – использовать поля *st\_atime\_ns* и *st\_mtime\_ns* из объекта результата `os.stat()` с параметром *ns* для `utime()`.29172918Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.16/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).29192920Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.utime` с аргументами `path`, `times`, `ns`, `dir_fd`.29212922Изменено в версии 3.3: Добавлена поддержка указания *path* в качестве открытого файлового дескриптора, и параметров *dir\_fd*, *follow\_symlinks* и *ns*.29232924Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).29252926Изменено в версии 3.15: Принимает любые вещественные числа в качестве *times*, а не только целые числа или числа с плавающей запятой.29272928#### `os.walk(top, topdown=True, onerror=None, followlinks=False)`29292930Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге *top* (включая сам *top*) возвращает кортеж из трех элементов `(dirpath, dirnames, filenames)`.29312932*dirpath* – строка, путь к каталогу. *dirnames* – список имен подкаталогов в *dirpath* (включая символические ссылки на каталоги и исключая `'.'` и `'..'`). *filenames* – список имен файлов, не являющихся каталогами, в *dirpath*. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с *top*) к файлу или каталогу в *dirpath*, используйте `os.path.join(dirpath, name)`. Отсортированы списки или нет, зависит от файловой системы. Если файл удаляется или добавляется в каталог *dirpath* во время формирования списков, будет ли включено имя этого файла, не определено.29332934Если необязательный аргумент *topdown* равен `True` или не указан, тройка для каталога генерируется до троек для всех его подкаталогов (каталоги обходятся сверху вниз). Если *topdown* равен `False`, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх). Независимо от значения *topdown*, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.29352936Когда *topdown* равен `True`, вызывающий код может изменить список *dirnames* на месте (возможно, используя [`del`](https://python-all.ru/3.16/reference/simple_stmts.html#del) или присваивание срезу), и `walk()` будет рекурсивно обходить только те подкаталоги, имена которых остались в *dirnames*; это можно использовать для обрезания дерева поиска, задания определенного порядка обхода или даже для уведомления `walk()` о каталогах, которые вызывающий код создает или переименовывает до того, как `walk()` возобновит работу. Изменение *dirnames*, когда *topdown* равен `False`, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в *dirnames* генерируются до того, как генерируется сам *dirpath*.29372938По умолчанию ошибки из вызова [`scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) игнорируются. Если указан необязательный аргумент *onerror*, это должна быть функция; она будет вызвана с одним аргументом – экземпляром [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError). Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибут `filename` объекта исключения.29392940По умолчанию `walk()` не будет спускаться в символические ссылки, ведущие к каталогам. Установите *followlinks* в `True`, чтобы посещать каталоги, на которые указывают симлинки, в системах, поддерживающих их.29412942> **Примечание**2943>2944> Имейте в виду, что установка *followlinks* в `True` может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. `walk()` не отслеживает уже посещенные каталоги.29452946> **Примечание**2947>2948> Если передается относительный путь, не следует изменять текущий рабочий каталог между возобновлениями `walk()`. `walk()` никогда не меняет текущий каталог и предполагает, что и его вызывающий код этого не делает.29492950В этом примере выводится количество байт, занимаемое файлами, не являющимися каталогами, в каждом каталоге ниже начального, за исключением того, что он не заходит в подкаталог `__pycache__`:29512952```python2953import os2954from os.path import join, getsize2955for root, dirs, files in os.walk('python/Lib/xml'):2956    print(root, "consumes", end=" ")2957    print(sum(getsize(join(root, name)) for name in files), end=" ")2958    print("bytes in", len(files), "non-directory files")2959    if '__pycache__' in dirs:2960        dirs.remove('__pycache__')  # не заходить в каталоги __pycache__2961```29622963В следующем примере (простая реализация [`shutil.rmtree()`](https://python-all.ru/3.16/library/shutil.html#shutil.rmtree)) обход дерева снизу вверх обязателен: [`rmdir()`](https://python-all.ru/3.16/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:29642965```python2966# Удалить всё, доступное из каталога с именем "top",2967# при условии отсутствия символических ссылок.2968# ВНИМАНИЕ: это опасно! Например, если top == '/', это2969# может удалить все ваши файлы на диске.2970import os2971for root, dirs, files in os.walk(top, topdown=False):2972    for name in files:2973        os.remove(os.path.join(root, name))2974    for name in dirs:2975        os.rmdir(os.path.join(root, name))2976os.rmdir(top)2977```29782979Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.walk` с аргументами `top`, `topdown`, `onerror`, `followlinks`.29802981Изменено в версии 3.5: Эта функция теперь вызывает [`os.scandir()`](https://python-all.ru/3.16/library/os.html#os.scandir) вместо [`os.listdir()`](https://python-all.ru/3.16/library/os.html#os.listdir), что делает её быстрее за счет сокращения количества вызовов [`os.stat()`](https://python-all.ru/3.16/library/os.html#os.stat).29822983Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).29842985#### `os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)`29862987Это работает точно так же, как и [`walk()`](https://python-all.ru/3.16/library/os.html#os.walk), за исключением того, что возвращает 4-кортеж `(dirpath, dirnames, filenames, dirfd)`, и поддерживает `dir_fd`.29882989*dirpath*, *dirnames* и *filenames* идентичны выводу [`walk()`](https://python-all.ru/3.16/library/os.html#os.walk), а *dirfd* – это файловый дескриптор, указывающий на каталог *dirpath*.29902991This function always supports [paths relative to directory descriptors](https://python-all.ru/3.16/library/os.html#dir-fd) and [not following symlinks](https://python-all.ru/3.16/library/os.html#follow-symlinks). Note however that, unlike other functions, the `fwalk()` default value for *follow\_symlinks* is `False`.29922993> **Примечание**2994>2995> Поскольку `fwalk()` возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощью [`dup()`](https://python-all.ru/3.16/library/os.html#os.dup)), если нужно сохранить их дольше.29962997В этом примере выводится количество байт, занимаемое файлами, не являющимися каталогами, в каждом каталоге ниже начального, за исключением того, что он не заходит в подкаталог `__pycache__`:29982999```python3000import os3001for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'):3002    print(root, "consumes", end=" ")3003    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),3004          end=" ")3005    print("bytes in", len(files), "non-directory files")3006    if '__pycache__' in dirs:3007        dirs.remove('__pycache__')  # не заходить в каталоги __pycache__3008```30093010В следующем примере обход дерева снизу вверх необходим: [`rmdir()`](https://python-all.ru/3.16/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:30113012```python3013# Удалить всё, доступное из каталога с именем "top",3014# при условии отсутствия символических ссылок.3015# ВНИМАНИЕ: это опасно! Например, если top == '/', это3016# может удалить все ваши файлы на диске.3017import os3018for root, dirs, files, rootfd in os.fwalk(top, topdown=False):3019    for name in files:3020        os.unlink(name, dir_fd=rootfd)3021    for name in dirs:3022        os.rmdir(name, dir_fd=rootfd)3023```30243025Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.fwalk` с аргументами `top`, `topdown`, `onerror`, `follow_symlinks`, `dir_fd`.30263027[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.30283029Добавлено в версии 3.3.30303031Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).30323033Изменено в версии 3.7: Добавлена поддержка путей [`bytes`](https://python-all.ru/3.16/library/stdtypes.html#bytes).30343035#### `os.memfd_create(name[, flags=os.MFD_CLOEXEC])`30363037Создаёт анонимный файл и возвращает файловый дескриптор, ссылающийся на него. Параметр *flags* должен быть одной из констант `os.MFD_*`, доступных в системе (или их побитовой комбинацией). По умолчанию новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).30383039Имя, переданное в *name*, используется как имя файла и будет отображаться как цель соответствующей символьной ссылки в каталоге `/proc/self/fd/`. Отображаемое имя всегда имеет префикс `memfd:` и служит только для отладки. Имена не влияют на поведение файлового дескриптора, поэтому несколько файлов могут иметь одно и то же имя без каких-либо побочных эффектов.30403041[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 3.17 с glibc \>= 2.27.30423043Добавлено в версии 3.8.30443045#### `os.MFD_CLOEXEC`30463047#### `os.MFD_ALLOW_SEALING`30483049#### `os.MFD_HUGETLB`30503051#### `os.MFD_HUGE_SHIFT`30523053#### `os.MFD_HUGE_MASK`30543055#### `os.MFD_HUGE_64KB`30563057#### `os.MFD_HUGE_512KB`30583059#### `os.MFD_HUGE_1MB`30603061#### `os.MFD_HUGE_2MB`30623063#### `os.MFD_HUGE_8MB`30643065#### `os.MFD_HUGE_16MB`30663067#### `os.MFD_HUGE_32MB`30683069#### `os.MFD_HUGE_256MB`30703071#### `os.MFD_HUGE_512MB`30723073#### `os.MFD_HUGE_1GB`30743075#### `os.MFD_HUGE_2GB`30763077#### `os.MFD_HUGE_16GB`30783079Эти флаги могут быть переданы в [`memfd_create()`](https://python-all.ru/3.16/library/os.html#os.memfd_create).30803081[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 3.17 с glibc \>= 2.2730823083Флаги `MFD_HUGE*` доступны только начиная с Linux 4.14.30843085Добавлено в версии 3.8.30863087#### `os.eventfd(initval[, flags=os.EFD_CLOEXEC])`30883089Создаёт и возвращает файловый дескриптор события. Этот дескриптор поддерживает [`read()`](https://python-all.ru/3.16/library/os.html#os.read) и [`write()`](https://python-all.ru/3.16/library/os.html#os.write) с буфером размером 8, [`select()`](https://python-all.ru/3.16/library/select.html#select.select), [`poll()`](https://python-all.ru/3.16/library/select.html#select.poll) и подобные. Подробнее см. на странице руководства *[eventfd(2)](https://python-all.ru/3.16/library/os.html)*. По умолчанию новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).30903091*initval* – начальное значение счётчика событий. Оно должно быть 32-битным целым числом без знака. Обратите внимание: хотя счётчик событий представляет собой 64-битное целое число без знака с максимальным значением 264-2, начальное значение ограничено 32-битным целым без знака.30923093*flags* может быть составлен из [`EFD_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.EFD_CLOEXEC), [`EFD_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.EFD_NONBLOCK) и [`EFD_SEMAPHORE`](https://python-all.ru/3.16/library/os.html#os.EFD_SEMAPHORE).30943095Если указан [`EFD_SEMAPHORE`](https://python-all.ru/3.16/library/os.html#os.EFD_SEMAPHORE) и счётчик событий не равен нулю, [`eventfd_read()`](https://python-all.ru/3.16/library/os.html#os.eventfd_read) возвращает 1 и уменьшает счётчик на единицу.30963097Если [`EFD_SEMAPHORE`](https://python-all.ru/3.16/library/os.html#os.EFD_SEMAPHORE) не указан и счётчик событий не равен нулю, [`eventfd_read()`](https://python-all.ru/3.16/library/os.html#os.eventfd_read) возвращает текущее значение счётчика и сбрасывает его в ноль.30983099Если счётчик событий равен нулю и [`EFD_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.EFD_NONBLOCK) не указан, [`eventfd_read()`](https://python-all.ru/3.16/library/os.html#os.eventfd_read) блокируется.31003101[`eventfd_write()`](https://python-all.ru/3.16/library/os.html#os.eventfd_write) увеличивает счётчик событий. Запись блокируется, если операция записи увеличила бы счётчик до значения, превышающего 264-2.31023103Пример:31043105```python3106import os31073108# семафор с начальным значением '1'3109fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFD_CLOEXEC)3110try:3111    # захватить семафор3112    v = os.eventfd_read(fd)3113    try:3114        do_work()3115    finally:3116        # освободить семафор3117        os.eventfd_write(fd, v)3118finally:3119    os.close(fd)3120```31213122[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.831233124Добавлено в версии 3.10.31253126#### `os.eventfd_read(fd)`31273128Читает значение из файлового дескриптора [`eventfd()`](https://python-all.ru/3.16/library/os.html#os.eventfd) и возвращает 64-битное целое без знака. Функция не проверяет, является ли *fd* файловым дескриптором `eventfd()`.31293130[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.2731313132Добавлено в версии 3.10.31333134#### `os.eventfd_write(fd, value)`31353136Добавляет значение в файловый дескриптор [`eventfd()`](https://python-all.ru/3.16/library/os.html#os.eventfd). *value* должно быть 64-битным целым без знака. Функция не проверяет, является ли *fd* файловым дескриптором `eventfd()`.31373138[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.2731393140Добавлено в версии 3.10.31413142#### `os.EFD_CLOEXEC`31433144Устанавливает флаг close-on-exec для нового файлового дескриптора [`eventfd()`](https://python-all.ru/3.16/library/os.html#os.eventfd).31453146[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.2731473148Добавлено в версии 3.10.31493150#### `os.EFD_NONBLOCK`31513152Устанавливает флаг состояния [`O_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.O_NONBLOCK) для нового файлового дескриптора [`eventfd()`](https://python-all.ru/3.16/library/os.html#os.eventfd).31533154[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.2731553156Добавлено в версии 3.10.31573158#### `os.EFD_SEMAPHORE`31593160Реализуют семафороподобную семантику для чтения из файлового дескриптора [`eventfd()`](https://python-all.ru/3.16/library/os.html#os.eventfd). При чтении внутренний счётчик уменьшается на единицу.31613162[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.3031633164Добавлено в версии 3.10.31653166### Таймерные файловые дескрипторы31673168Добавлено в версии 3.13.31693170Эти функции обеспечивают поддержку API *таймерных файловых дескрипторов* Linux. Разумеется, все они доступны только в Linux.31713172#### `os.timerfd_create(clockid, /, *, flags=0)`31733174Создаёт и возвращает таймерный файловый дескриптор (*timerfd*).31753176Файловый дескриптор, возвращаемый `timerfd_create()`, поддерживает:31773178- [`read()`](https://python-all.ru/3.16/library/os.html#os.read)3179- [`select()`](https://python-all.ru/3.16/library/select.html#select.select)3180- [`poll()`](https://python-all.ru/3.16/library/select.html#select.poll)31813182Метод файлового дескриптора [`read()`](https://python-all.ru/3.16/library/os.html#os.read) можно вызвать с размером буфера 8. Если таймер уже сработал один или несколько раз, `read()` возвращает количество срабатываний в порядке байтов хоста; это значение может быть преобразовано в [`int`](https://python-all.ru/3.16/library/functions.html#int) с помощью `int.from_bytes(x, byteorder=sys.byteorder)`.31833184[`select()`](https://python-all.ru/3.16/library/select.html#select.select) и [`poll()`](https://python-all.ru/3.16/library/select.html#select.poll) можно использовать для ожидания, пока таймер не сработает и файловый дескриптор не станет доступным для чтения.31853186*clockid* должен быть допустимым [идентификатором часов](https://python-all.ru/3.16/library/time.html#time-clock-id-constants), как определено в модуле [`time`](https://python-all.ru/3.16/library/time.html#module-time):31873188- [`time.CLOCK_REALTIME`](https://python-all.ru/3.16/library/time.html#time.CLOCK_REALTIME)3189- [`time.CLOCK_MONOTONIC`](https://python-all.ru/3.16/library/time.html#time.CLOCK_MONOTONIC)3190- [`time.CLOCK_BOOTTIME`](https://python-all.ru/3.16/library/time.html#time.CLOCK_BOOTTIME) (начиная с Linux 3.15 для timerfd\_create)31913192Если *clockid* равен [`time.CLOCK_REALTIME`](https://python-all.ru/3.16/library/time.html#time.CLOCK_REALTIME), используется системный таймер реального времени, который можно установить. Если системные часы изменяются, настройки таймера необходимо обновить. Чтобы отменить таймер при изменении системных часов, см. [`TFD_TIMER_CANCEL_ON_SET`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_CANCEL_ON_SET).31933194Если *clockid* равен [`time.CLOCK_MONOTONIC`](https://python-all.ru/3.16/library/time.html#time.CLOCK_MONOTONIC), используются монотонно возрастающие часы, которые нельзя установить. Даже если системные часы изменяются, настройки таймера не будут затронуты.31953196Если *clockid* равен [`time.CLOCK_BOOTTIME`](https://python-all.ru/3.16/library/time.html#time.CLOCK_BOOTTIME), то же самое, что и [`time.CLOCK_MONOTONIC`](https://python-all.ru/3.16/library/time.html#time.CLOCK_MONOTONIC), за исключением того, что он включает время, когда система была приостановлена.31973198Поведение файлового дескриптора можно изменить, задав значение *flags*. Можно использовать любые из следующих переменных, комбинируя их с помощью побитового ИЛИ (оператор `|`):31993200- [`TFD_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.TFD_NONBLOCK)3201- [`TFD_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.TFD_CLOEXEC)32023203Если флаг [`TFD_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.TFD_NONBLOCK) не установлен, [`read()`](https://python-all.ru/3.16/library/os.html#os.read) блокируется до истечения таймера. Если он установлен, `read()` не блокируется, но если с момента последнего вызова read не было истечения, `read()` вызывает исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с `errno`, установленным в [`errno.EAGAIN`](https://python-all.ru/3.16/library/errno.html#errno.EAGAIN).32043205[`TFD_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.TFD_CLOEXEC) всегда автоматически устанавливается Python.32063207Файловый дескриптор должен быть закрыт с помощью [`os.close()`](https://python-all.ru/3.16/library/os.html#os.close), когда он больше не нужен, иначе произойдет утечка файлового дескриптора.32083209> **См. также**3210>3211> Страница руководства *[timerfd\_create(2)](https://python-all.ru/3.16/library/os.html)*.32123213[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832143215Добавлено в версии 3.13.32163217#### `os.timerfd_settime(fd, /, *, flags=flags, initial=0.0, interval=0.0)`32183219Изменяет внутренний таймер файлового дескриптора таймера. Эта функция работает с тем же интервальным таймером, что и [`timerfd_settime_ns()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime_ns).32203221*fd* должен быть допустимым файловым дескриптором таймера.32223223Поведение таймера можно изменить, задав значение *flags*. Можно использовать любые из следующих переменных, комбинируя их с помощью побитового ИЛИ (оператор `|`):32243225- [`TFD_TIMER_ABSTIME`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_ABSTIME)3226- [`TFD_TIMER_CANCEL_ON_SET`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_CANCEL_ON_SET)32273228Таймер отключается установкой *initial* в ноль (`0`). Если *initial* больше или равен нулю, таймер включается. Если *initial* меньше нуля, вызывается исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с `errno`, установленным в [`errno.EINVAL`](https://python-all.ru/3.16/library/errno.html#errno.EINVAL).32293230По умолчанию таймер сработает, когда пройдет *initial* секунд. (Если *initial* равно нулю, таймер сработает немедленно.)32313232Однако, если установлен флаг [`TFD_TIMER_ABSTIME`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_ABSTIME), таймер сработает, когда часы таймера (установленные с помощью *clockid* в [`timerfd_create()`](https://python-all.ru/3.16/library/os.html#os.timerfd_create)) достигнут *initial* секунд.32333234Интервал таймера задается вещественным числом *interval*. Если *interval* равен нулю, таймер срабатывает только один раз, при первом истечении времени. Если *interval* больше нуля, таймер срабатывает каждый раз, когда с момента предыдущего срабатывания прошло *interval* секунд. Если *interval* меньше нуля, возникает исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с `errno`, установленным в [`errno.EINVAL`](https://python-all.ru/3.16/library/errno.html#errno.EINVAL).32353236Если флаг [`TFD_TIMER_CANCEL_ON_SET`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_CANCEL_ON_SET) установлен вместе с [`TFD_TIMER_ABSTIME`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_ABSTIME) и часы для этого таймера равны [`time.CLOCK_REALTIME`](https://python-all.ru/3.16/library/time.html#time.CLOCK_REALTIME), таймер помечается как отменяемый, если часы реального времени изменяются скачкообразно. Чтение дескриптора прерывается с ошибкой ECANCELED.32373238Linux управляет системными часами как UTC. Переход на летнее время осуществляется только изменением часового пояса и не вызывает скачкообразного изменения системных часов.32393240Скачкообразное изменение системных часов может быть вызвано следующими событиями:32413242- `settimeofday`3243- `clock_settime`3244- установка системной даты и времени с помощью команды `date`32453246Возвращает кортеж из двух элементов (`next_expiration`, `interval`) из предыдущего состояния таймера до выполнения этой функции.32473248> **См. также**3249>3250> *[timerfd\_create(2)](https://python-all.ru/3.16/library/os.html)*, *[timerfd\_settime(2)](https://python-all.ru/3.16/library/os.html)*, *[settimeofday(2)](https://python-all.ru/3.16/library/os.html)*, *[clock\_settime(2)](https://python-all.ru/3.16/library/os.html)* и *[date(1)](https://python-all.ru/3.16/library/os.html)*.32513252[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832533254Добавлено в версии 3.13.32553256#### `os.timerfd_settime_ns(fd, /, *, flags=0, initial=0, interval=0)`32573258Аналогично [`timerfd_settime()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime), но использует время в наносекундах. Эта функция работает с тем же интервальным таймером, что и `timerfd_settime()`.32593260[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832613262Добавлено в версии 3.13.32633264#### `os.timerfd_gettime(fd, /)`32653266Возвращает кортеж из двух чисел с плавающей запятой (`next_expiration`, `interval`).32673268`next_expiration` обозначает относительное время до следующего срабатывания таймера, независимо от того, установлен ли флаг [`TFD_TIMER_ABSTIME`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_ABSTIME).32693270`interval` обозначает интервал таймера. Если равен нулю, таймер сработает только один раз, по истечении `next_expiration` секунд.32713272> **См. также**3273>3274> *[timerfd\_gettime(2)](https://python-all.ru/3.16/library/os.html)*32753276[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832773278Добавлено в версии 3.13.32793280#### `os.timerfd_gettime_ns(fd, /)`32813282Аналог [`timerfd_gettime()`](https://python-all.ru/3.16/library/os.html#os.timerfd_gettime), но возвращает время в наносекундах.32833284[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832853286Добавлено в версии 3.13.32873288#### `os.TFD_NONBLOCK`32893290Флаг для функции [`timerfd_create()`](https://python-all.ru/3.16/library/os.html#os.timerfd_create), который устанавливает флаг состояния [`O_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.O_NONBLOCK) для нового файлового дескриптора таймера. Если [`TFD_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.TFD_NONBLOCK) не установлен как флаг, [`read()`](https://python-all.ru/3.16/library/os.html#os.read) блокируется.32913292[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.832933294Добавлено в версии 3.13.32953296#### `os.TFD_CLOEXEC`32973298Флаг для функции [`timerfd_create()`](https://python-all.ru/3.16/library/os.html#os.timerfd_create). Если [`TFD_CLOEXEC`](https://python-all.ru/3.16/library/os.html#os.TFD_CLOEXEC) установлен как флаг, устанавливает флаг close-on-exec для нового файлового дескриптора.32993300[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.833013302Добавлено в версии 3.13.33033304#### `os.TFD_TIMER_ABSTIME`33053306Флаг для функций [`timerfd_settime()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime) и [`timerfd_settime_ns()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime_ns). Если этот флаг установлен, *initial* интерпретируется как абсолютное значение на часах таймера (в секундах UTC или наносекундах с начала эпохи Unix).33073308[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.833093310Добавлено в версии 3.13.33113312#### `os.TFD_TIMER_CANCEL_ON_SET`33133314Флаг для функций [`timerfd_settime()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime) и [`timerfd_settime_ns()`](https://python-all.ru/3.16/library/os.html#os.timerfd_settime_ns) вместе с [`TFD_TIMER_ABSTIME`](https://python-all.ru/3.16/library/os.html#os.TFD_TIMER_ABSTIME). Таймер отменяется, когда время базовых часов изменяется скачкообразно.33153316[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 2.6.27 с glibc \>= 2.833173318Добавлено в версии 3.13.33193320### Расширенные атрибуты Linux33213322Добавлено в версии 3.3.33233324Все эти функции доступны только в Linux.33253326#### `os.getxattr(path, attribute, *, follow_symlinks=True)`33273328Возвращает значение расширенного атрибута файловой системы *attribute* для *path*. *attribute* может быть bytes или str (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)). Если это str, он кодируется с использованием кодировки файловой системы.33293330Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).33313332Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.getxattr` с аргументами `path`, `attribute`.33333334Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *path* и *attribute*.33353336#### `os.listxattr(path=None, *, follow_symlinks=True)`33373338Возвращает список расширенных атрибутов файловой системы для *path*. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если *path* равен `None`, `listxattr()` будет исследовать текущий каталог.33393340Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).33413342Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.listxattr` с аргументом `path`.33433344Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).33453346Изменено в версии 3.15: `os.listxattr(-1)` теперь завершается ошибкой `OSError(errno.EBADF)` вместо вывода расширенных атрибутов текущей директории.33473348#### `os.removexattr(path, attribute, *, follow_symlinks=True)`33493350Удаляет расширенный атрибут файловой системы *attribute* из *path*. *attribute* должен быть bytes или str (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)). Если это строка, она кодируется с использованием [кодировки файловой системы и обработчика ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler).33513352Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).33533354Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.removexattr` с аргументами `path`, `attribute`.33553356Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *path* и *attribute*.33573358#### `os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)`33593360Устанавливает расширенный атрибут файловой системы *attribute* для *path* в значение *value*. *attribute* должен быть bytes или str без встроенных NUL-символов (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.16/library/os.html#os.PathLike)). Если это str, он кодируется с использованием [кодировки файловой системы и обработчика ошибок](https://python-all.ru/3.16/glossary.html#term-filesystem-encoding-and-error-handler). *flags* может быть [`XATTR_REPLACE`](https://python-all.ru/3.16/library/os.html#os.XATTR_REPLACE) или [`XATTR_CREATE`](https://python-all.ru/3.16/library/os.html#os.XATTR_CREATE). Если указан `XATTR_REPLACE` и атрибут не существует, будет вызвано `ENODATA`. Если указан `XATTR_CREATE` и атрибут уже существует, атрибут не будет создан, и будет вызвано `EEXISTS`.33613362Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.16/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.16/library/os.html#follow-symlinks).33633364> **Примечание**3365>3366> В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.33673368Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.setxattr` с аргументами `path`, `attribute`, `value`, `flags`.33693370Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object) для *path* и *attribute*.33713372#### `os.XATTR_SIZE_MAX`33733374Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.33753376#### `os.XATTR_CREATE`33773378Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.16/library/os.html#os.setxattr). Оно указывает, что операция должна создать атрибут.33793380#### `os.XATTR_REPLACE`33813382Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.16/library/os.html#os.setxattr). Оно указывает, что операция должна заменить существующий атрибут.33833384## Управление процессами33853386Эти функции можно использовать для создания процессов и управления ими.33873388Различные функции [`exec*`](https://python-all.ru/3.16/library/os.html#os.execl) принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это `argv[0]`, передаваемый в `main()` программы. Например, `os.execv('/bin/echo', ['foo', 'bar'])` выведет на стандартный вывод только `bar`; `foo` будет проигнорирован.33893390#### `os.abort()`33913392Генерирует сигнал [`SIGABRT`](https://python-all.ru/3.16/library/signal.html#signal.SIGABRT) для текущего процесса. На Unix поведение по умолчанию – создание дампа памяти; на Windows процесс немедленно возвращает код завершения `3`. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный для `SIGABRT` с помощью [`signal.signal()`](https://python-all.ru/3.16/library/signal.html#signal.signal).33933394#### `os.add_dll_directory(path)`33953396Добавляет путь в путь поиска DLL.33973398Этот путь поиска используется при разрешении зависимостей импортированных модулей-расширений (сам модуль разрешается через [`sys.path`](https://python-all.ru/3.16/library/sys.html#sys.path)), а также функциями [`ctypes`](https://python-all.ru/3.16/library/ctypes.html#module-ctypes).33993400Удалите каталог, вызвав **close()** для возвращённого объекта или используя его в выражении [`with`](https://python-all.ru/3.16/reference/compound_stmts.html#with).34013402Смотрите [документацию Microsoft](https://python-all.ru/3.16/library/os.html) для получения дополнительной информации о загрузке DLL.34033404Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.add_dll_directory` с аргументом `path`.34053406[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.34073408Добавлено в версии 3.8: Предыдущие версии CPython разрешали DLL, используя поведение по умолчанию для текущего процесса. Это приводило к несоответствиям: например, поиск иногда выполнялся только в `PATH` или текущем рабочем каталоге, а системные функции, такие как `AddDllDirectory`, не действовали.34093410В версии 3.8 два основных способа загрузки DLL теперь явно переопределяют поведение на уровне процесса для обеспечения согласованности. Смотрите [примечания по переносу](https://python-all.ru/3.16/whatsnew/3.8.html#bpo-36085-whatsnew) для информации об обновлении библиотек.34113412#### `os.execl(path, arg0, arg1, ...)`34133414#### `os.execle(path, arg0, arg1, ..., env)`34153416#### `os.execlp(file, arg0, arg1, ...)`34173418#### `os.execlpe(file, arg0, arg1, ..., env)`34193420#### `os.execv(path, args)`34213422#### `os.execve(path, args, env)`34233424#### `os.execvp(file, args)`34253426#### `os.execvpe(file, args, env)`34273428Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и получает тот же идентификатор процесса, что и вызывающий. Ошибки сообщаются как исключения [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError).34293430Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому если на этих открытых файлах могут быть буферизованные данные, следует сбросить их с помощью [`flush()`](https://python-all.ru/3.16/library/io.html#io.IOBase.flush) или [`os.fsync()`](https://python-all.ru/3.16/library/os.html#os.fsync) перед вызовом функции `exec*`.34313432Варианты с буквами «l» и «v» функций `exec*` различаются способом передачи аргументов командной строки. Варианты «l», пожалуй, проще в использовании, если количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными аргументами функций `execl*()`. Варианты «v» удобны, когда количество параметров переменное: аргументы передаются в виде списка или кортежа как параметр *args*. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, хотя это и не принудительно.34333434Варианты, содержащие букву «p» ближе к концу (`execlp()`, `execlpe()`, `execvp()` и `execvpe()`), используют переменную окружения `PATH` для поиска программы *file*. При замене окружения (с использованием одного из вариантов `exec*e`, описанных в следующем абзаце) новое окружение используется как источник переменной `PATH`. Другие варианты: `execl()`, `execle()`, `execv()` и `execve()` – не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь. Относительные пути должны содержать хотя бы один слеш, даже в Windows, поскольку простые имена не будут разрешаться.34353436Для `execle()`, `execlpe()`, `execve()` и `execvpe()` (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, используемым для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции `execl()`, `execlp()`, `execv()` и `execvp()` заставляют новый процесс наследовать окружение текущего процесса.34373438Для `execve()` на некоторых платформах *path* также может быть указан в виде открытого файлового дескриптора. Эта функциональность может не поддерживаться на вашей платформе; можно проверить, доступна ли она, с помощью [`os.supports_fd`](https://python-all.ru/3.16/library/os.html#os.supports_fd). Если она недоступна, её использование вызовет [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).34393440Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.exec` с аргументами `path`, `args`, `env`.34413442[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не Android, не iOS.34433444Изменено в версии 3.3: Добавлена поддержка указания *path* в виде открытого файлового дескриптора для `execve()`.34453446Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).34473448#### `os._exit(n)`34493450Завершает процесс с кодом *n*, без вызова обработчиков очистки, сброса буферов stdio и т.д.34513452> **Примечание**3453>3454> Стандартный способ завершения – [`sys.exit(n)`](https://python-all.ru/3.16/library/sys.html#sys.exit). `_exit()` обычно следует использовать только в дочернем процессе после [`fork()`](https://python-all.ru/3.16/library/os.html#os.fork).34553456Определены следующие коды завершения, которые можно использовать с [`_exit()`](https://python-all.ru/3.16/library/os.html#os._exit), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.34573458> **Примечание**3459>3460> Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.34613462#### `os.EX_OK`34633464Код завершения, означающий, что ошибок не произошло. Может быть взят из определённого значения `EXIT_SUCCESS` на некоторых платформах. Обычно имеет значение ноль.34653466[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.34673468#### `os.EX_USAGE`34693470Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.34713472[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.34733474#### `os.EX_DATAERR`34753476Код завершения, означающий, что входные данные были некорректны.34773478[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.34793480#### `os.EX_NOINPUT`34813482Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.34833484[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.34853486#### `os.EX_NOUSER`34873488Код завершения, означающий, что указанный пользователь не существовал.34893490[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.34913492#### `os.EX_NOHOST`34933494Код завершения, означающий, что указанный хост не существовал.34953496[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.34973498#### `os.EX_UNAVAILABLE`34993500Код завершения, означающий, что требуемая служба недоступна.35013502[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35033504#### `os.EX_SOFTWARE`35053506Код завершения, означающий, что обнаружена внутренняя программная ошибка.35073508[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35093510#### `os.EX_OSERR`35113512Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.35133514[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35153516#### `os.EX_OSFILE`35173518Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.35193520[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35213522#### `os.EX_CANTCREAT`35233524Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.35253526[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35273528#### `os.EX_IOERR`35293530Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.35313532[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35333534#### `os.EX_TEMPFAIL`35353536Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.35373538[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35393540#### `os.EX_PROTOCOL`35413542Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.35433544[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35453546#### `os.EX_NOPERM`35473548Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).35493550[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35513552#### `os.EX_CONFIG`35533554Код выхода, указывающий на ошибку конфигурации.35553556[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35573558#### `os.EX_NOTFOUND`35593560Код выхода, означающий нечто вроде «запись не найдена».35613562[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.35633564#### `os.fork()`35653566Порождает дочерний процесс. Возвращает `0` в дочернем процессе и идентификатор дочернего процесса в родительском. При возникновении ошибки возбуждается [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError).35673568Некоторые платформы, включая FreeBSD \<= 6.3 и Cygwin, имеют известные проблемы при использовании `fork()` из потока.35693570Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.fork` без аргументов.35713572> **Предупреждение**3573>3574> При использовании TLS-сокетов в приложении, вызывающем `fork()`, следует прочитать предупреждение в документации [`ssl`](https://python-all.ru/3.16/library/ssl.html#module-ssl).35753576> **Предупреждение**3577>3578> В macOS использование этой функции небезопасно в сочетании с высокоуровневыми системными API, в том числе с [`urllib.request`](https://python-all.ru/3.16/library/urllib.request.html#module-urllib.request).35793580Изменено в версии 3.8: Вызов `fork()` в подынтерпретаторе больше не поддерживается (возбуждается [`RuntimeError`](https://python-all.ru/3.16/library/exceptions.html#RuntimeError)).35813582Изменено в версии 3.12: Если Python обнаруживает, что процесс имеет несколько потоков, `os.fork()` теперь возбуждает [`DeprecationWarning`](https://python-all.ru/3.16/library/exceptions.html#DeprecationWarning).35833584Мы решили показывать это предупреждение, когда это возможно обнаружить, чтобы лучше информировать разработчиков о проблеме, которую платформа POSIX явно помечает как неподдерживаемую. Даже в коде, который *выглядит* рабочим, смешивание потоков и `os.fork()` на платформах POSIX никогда не было безопасным. Сама среда выполнения CPython всегда вызывала API, небезопасные для использования в дочернем процессе, если в родительском процессе существовали потоки (например, `malloc` и `free`).35853586Пользователи macOS или пользователи реализаций libc или malloc, отличных от типичных для glibc, уже с большей вероятностью столкнутся с взаимоблокировками при выполнении такого кода.35873588См. [обсуждение несовместимости fork с потоками](https://python-all.ru/3.16/library/os.html) для технических подробностей о том, почему мы доводим до сведения разработчиков эту давнюю проблему совместимости платформ.35893590[Доступность](https://python-all.ru/3.16/library/intro.html#availability): POSIX, не WASI, не Android, не iOS.35913592#### `os.forkpty()`35933594Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару `(pid, fd)`, где *pid* равен `0` в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, и *fd* – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.16/library/pty.html#module-pty). Если возникает ошибка, возбуждается [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError).35953596Возвращаемый файловый дескриптор *fd* является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).35973598Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.forkpty` без аргументов.35993600> **Предупреждение**3601>3602> В macOS использование этой функции небезопасно в сочетании с высокоуровневыми системными API, в том числе с [`urllib.request`](https://python-all.ru/3.16/library/urllib.request.html#module-urllib.request).36033604Изменено в версии 3.8: Вызов `forkpty()` в подынтерпретаторе больше не поддерживается (возбуждается [`RuntimeError`](https://python-all.ru/3.16/library/exceptions.html#RuntimeError)).36053606Изменено в версии 3.12: Если Python может обнаружить, что процесс имеет несколько потоков, теперь это возбуждает [`DeprecationWarning`](https://python-all.ru/3.16/library/exceptions.html#DeprecationWarning). См. более подробное объяснение в [`os.fork()`](https://python-all.ru/3.16/library/os.html#os.fork).36073608Изменено в версии 3.15: Возвращаемый файловый дескриптор теперь стал ненаследуемым.36093610[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.36113612#### `os.kill(pid, sig, /)`36133614Отправляет сигнал *sig* процессу *pid*. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле [`signal`](https://python-all.ru/3.16/library/signal.html#module-signal).36153616Windows: Сигналы [`signal.CTRL_C_EVENT`](https://python-all.ru/3.16/library/signal.html#signal.CTRL_C_EVENT) и [`signal.CTRL_BREAK_EVENT`](https://python-all.ru/3.16/library/signal.html#signal.CTRL_BREAK_EVENT) являются специальными сигналами, которые могут быть отправлены только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение *sig* приведет к безусловному завершению процесса через API TerminateProcess, и код выхода будет установлен в *sig*.36173618См. также [`signal.pthread_kill()`](https://python-all.ru/3.16/library/signal.html#signal.pthread_kill).36193620Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.kill` с аргументами `pid`, `sig`.36213622[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не iOS.36233624Изменено в версии 3.2: Добавлена поддержка Windows.36253626#### `os.killpg(pgid, sig, /)`36273628Отправить сигнал *sig* группе процессов *pgid*.36293630Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.killpg` с аргументами `pgid`, `sig`.36313632[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не iOS.36333634#### `os.nice(increment, /)`36353636Добавить *increment* к «приоритету» процесса. Возвращает новый приоритет.36373638[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI.36393640#### `os.pidfd_open(pid, flags=0)`36413642Возвращает файловый дескриптор, ссылающийся на процесс *pid* с установленными *flags*. Этот дескриптор можно использовать для управления процессом без состояний гонки и сигналов.36433644См. man-страницу *[pidfd\_open(2)](https://python-all.ru/3.16/library/os.html)* для подробностей.36453646[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 5.3, Android \>= [`build-time`](https://python-all.ru/3.16/library/sys.html#sys.getandroidapilevel) API level 3136473648Добавлено в версии 3.9.36493650#### `os.PIDFD_NONBLOCK`36513652Этот флаг указывает, что файловый дескриптор будет неблокирующим. Если процесс, на который ссылается файловый дескриптор, ещё не завершился, то попытка ожидания на файловом дескрипторе с помощью *[waitid(2)](https://python-all.ru/3.16/library/os.html)* немедленно вернёт ошибку [`EAGAIN`](https://python-all.ru/3.16/library/errno.html#errno.EAGAIN), а не будет блокироваться.36533654[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 5.1036553656Добавлено в версии 3.12.36573658#### `os.pidfd_getfd(pidfd, targetfd, *, flags=0)`36593660Дублирует *targetfd* из процесса, на который указывает файловый дескриптор процесса *pidfd*, в вызывающий процесс. Возвращаемый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.16/library/os.html#fd-inheritance).36613662*flags* зарезервирован и в настоящее время должен быть `0`.36633664За дополнительными сведениями обратитесь к странице руководства *[pidfd\_getfd(2)](https://python-all.ru/3.16/library/os.html)*.36653666[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 5.6, Android \>= [`build-time`](https://python-all.ru/3.16/library/sys.html#sys.getandroidapilevel) API level 3136673668Добавлено в версии 3.16.0a0 (не выпущено).36693670#### `os.plock(op, /)`36713672Блокирует сегменты программы в памяти. Значение *op* (определённое в `<sys/lock.h>`) определяет, какие сегменты блокируются.36733674[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не macOS, не iOS.36753676#### `os.popen(cmd, mode='r', buffering=-1)`36773678Открывает канал от команды *cmd* или к ней. Возвращаемое значение – открытый файловый объект, подключённый к каналу, который можно читать или записывать в него в зависимости от того, равен ли *mode* `'r'` (по умолчанию) или `'w'`. Аргумент *buffering* имеет тот же смысл, что и соответствующий аргумент встроенной функции [`open()`](https://python-all.ru/3.16/library/functions.html#open). Возвращаемый файловый объект читает или записывает строки текста, а не байты.36793680Метод `close` возвращает [`None`](https://python-all.ru/3.16/library/constants.html#None), если подпроцесс завершился успешно, или код возврата подпроцесса в случае ошибки. В системах POSIX, если код возврата положительный, он представляет собой возвращаемое значение процесса, сдвинутое влево на один байт. Если код возврата отрицательный, процесс был завершён сигналом, соответствующим отрицательному значению кода возврата. (Например, возвращаемое значение может быть `- signal.SIGKILL`, если подпроцесс был убит.) В системах Windows возвращаемое значение содержит знаковый целочисленный код возврата дочернего процесса.36813682В Unix [`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования результата метода `close` (статуса выхода) в код выхода, если он не равен `None`. В Windows результат метода `close` непосредственно является кодом выхода (или `None`).36833684Это реализовано с помощью [`subprocess.Popen`](https://python-all.ru/3.16/library/subprocess.html#subprocess.Popen); обратитесь к документации этого класса для получения более мощных способов управления подпроцессами и общения с ними.36853686[Доступность](https://python-all.ru/3.16/library/intro.html#availability): не WASI, не Android, не iOS.36873688> **Примечание**3689>3690> [Режим UTF-8 Python](https://python-all.ru/3.16/library/os.html#utf8-mode) влияет на кодировки, используемые для *cmd* и содержимого канала.3691>3692> `popen()` – это простая обёртка вокруг [`subprocess.Popen`](https://python-all.ru/3.16/library/subprocess.html#subprocess.Popen). Используйте `subprocess.Popen` или [`subprocess.run()`](https://python-all.ru/3.16/library/subprocess.html#subprocess.run) для управления такими параметрами, как кодировки.36933694[Мягкое устаревание](https://python-all.ru/3.16/glossary.html#term-soft-deprecated) с версии 3.14: Вместо этого рекомендуется модуль [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess).36953696#### `os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)`36973698Обёртка для API библиотеки C `posix_spawn()` для использования из Python.36993700Большинству пользователей следует использовать [`subprocess.run()`](https://python-all.ru/3.16/library/subprocess.html#subprocess.run) вместо `posix_spawn()`.37013702Позиционные аргументы *path*, *args* и *env* аналогичны [`execve()`](https://python-all.ru/3.16/library/os.html#os.execve). *env* может быть `None`, в этом случае используется окружение текущего процесса.37033704Параметр *path* – это путь к исполняемому файлу. *path* должен содержать каталог. Используйте [`posix_spawnp()`](https://python-all.ru/3.16/library/os.html#os.posix_spawnp) для передачи исполняемого файла без каталога.37053706Аргумент *file\_actions* может быть последовательностью кортежей, описывающих действия над определёнными файловыми дескрипторами в дочернем процессе между шагами `fork()` и `exec()` реализации библиотеки C. Первый элемент каждого кортежа должен быть одним из трёх индикаторов типа, перечисленных ниже, описывающих остальные элементы кортежа:37073708#### `os.POSIX_SPAWN_OPEN`37093710(`os.POSIX_SPAWN_OPEN`, *fd*, *path*, *flags*, *mode*)37113712Выполняет `os.dup2(os.open(path, flags, mode), fd)`.37133714#### `os.POSIX_SPAWN_CLOSE`37153716(`os.POSIX_SPAWN_CLOSE`, *fd*)37173718Выполняет `os.close(fd)`.37193720#### `os.POSIX_SPAWN_DUP2`37213722(`os.POSIX_SPAWN_DUP2`, *fd*, *new\_fd*)37233724Выполняет `os.dup2(fd, new_fd)`.37253726#### `os.POSIX_SPAWN_CLOSEFROM`37273728(`os.POSIX_SPAWN_CLOSEFROM`, *fd*)37293730Выполняет `os.closerange(fd, INF)`.37313732Эти кортежи соответствуют вызовам API библиотеки C `posix_spawn_file_actions_addopen()`, `posix_spawn_file_actions_addclose()`, `posix_spawn_file_actions_adddup2()` и `posix_spawn_file_actions_addclosefrom_np()`, используемым для подготовки самого вызова `posix_spawn()`.37333734Аргумент *setpgroup* устанавливает группу процессов дочернего процесса в указанное значение. Если указано значение 0, идентификатор группы процессов дочернего процесса будет равен его идентификатору процесса. Если значение *setpgroup* не задано, дочерний процесс наследует идентификатор группы процессов родительского процесса. Этот аргумент соответствует флагу `POSIX_SPAWN_SETPGROUP` библиотеки C.37353736Если аргумент *resetids* равен `True`, он сбрасывает эффективные UID и GID дочернего процесса в реальные UID и GID родительского процесса. Если аргумент равен `False`, дочерний процесс сохраняет эффективные UID и GID родителя. В любом случае, если на исполняемом файле установлены биты разрешений set-user-ID и set-group-ID, их действие переопределит настройку эффективных UID и GID. Этот аргумент соответствует флагу `POSIX_SPAWN_RESETIDS` библиотеки C.37373738Если аргумент *setsid* равен `True`, он создаёт новый идентификатор сессии для `posix_spawn`. *setsid* требует флаг `POSIX_SPAWN_SETSID` или `POSIX_SPAWN_SETSID_NP`. В противном случае возбуждается [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).37393740Аргумент *setsigmask* устанавливает маску сигналов в указанный набор. Если параметр не используется, дочерний процесс наследует маску сигналов родителя. Этот аргумент соответствует флагу `POSIX_SPAWN_SETSIGMASK` библиотеки C.37413742Аргумент *sigdef* сбрасывает диспозицию всех сигналов в указанном наборе. Этот аргумент соответствует флагу `POSIX_SPAWN_SETSIGDEF` библиотеки C.37433744Аргумент *scheduler* должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр [`sched_param`](https://python-all.ru/3.16/library/os.html#os.sched_param) с параметрами планировщика. Значение `None` на месте политики планировщика указывает, что она не предоставлена. Этот аргумент является комбинацией флагов `POSIX_SPAWN_SETSCHEDPARAM` и `POSIX_SPAWN_SETSCHEDULER` библиотеки C.37453746Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.posix_spawn` с аргументами `path`, `argv`, `env`.37473748Добавлено в версии 3.8.37493750Изменено в версии 3.13: Параметр *env* принимает `None`. `os.POSIX_SPAWN_CLOSEFROM` доступен на платформах, где существует `posix_spawn_file_actions_addclosefrom_np()`.37513752[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.37533754#### `os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)`37553756Обёртка для API библиотеки C `posix_spawnp()` для использования из Python.37573758Аналогичен [`posix_spawn()`](https://python-all.ru/3.16/library/os.html#os.posix_spawn), за исключением того, что система ищет исполняемый файл *executable* в списке каталогов, заданных переменной окружения `PATH` (так же, как и для `execvp(3)`).37593760Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.posix_spawn` с аргументами `path`, `argv`, `env`.37613762Добавлено в версии 3.8.37633764[Доступность](https://python-all.ru/3.16/library/intro.html#availability): POSIX, не WASI, не Android, не iOS.37653766См. документацию [`posix_spawn()`](https://python-all.ru/3.16/library/os.html#os.posix_spawn).37673768#### `os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)`37693770Регистрирует вызываемые объекты, которые будут выполнены при порождении нового дочернего процесса с помощью [`os.fork()`](https://python-all.ru/3.16/library/os.html#os.fork) или аналогичных API клонирования процессов. Параметры являются необязательными и только именованными. Каждый задаёт свою точку вызова.37713772- *before* – функция, вызываемая перед порождением дочернего процесса.3773- *after\_in\_parent* – функция, вызываемая из родительского процесса после порождения дочернего процесса.3774- *after\_in\_child* – функция, вызываемая из дочернего процесса.37753776Эти вызовы выполняются только в том случае, если ожидается возврат управления в интерпретатор Python. Типичный запуск [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess) не вызовет их, так как дочерний процесс не будет возвращаться в интерпретатор.37773778Функции, зарегистрированные для выполнения перед порождением, вызываются в обратном порядке регистрации. Функции, зарегистрированные для выполнения после порождения (как в родителе, так и в дочернем процессе), вызываются в порядке регистрации.37793780Обратите внимание, что вызовы `fork()`, выполняемые сторонним кодом на C, могут не вызывать эти функции, если только он явно не вызывает [`PyOS_BeforeFork()`](https://python-all.ru/3.16/c-api/sys.html#c.PyOS_BeforeFork), [`PyOS_AfterFork_Parent()`](https://python-all.ru/3.16/c-api/sys.html#c.PyOS_AfterFork_Parent) и [`PyOS_AfterFork_Child()`](https://python-all.ru/3.16/c-api/sys.html#c.PyOS_AfterFork_Child).37813782Невозможно отменить регистрацию функции.37833784[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.37853786Добавлено в версии 3.7.37873788#### `os.spawnl(mode, path, ...)`37893790#### `os.spawnle(mode, path, ..., env)`37913792#### `os.spawnlp(mode, file, ...)`37933794#### `os.spawnlpe(mode, file, ..., env)`37953796#### `os.spawnv(mode, path, args)`37973798#### `os.spawnve(mode, path, args, env)`37993800#### `os.spawnvp(mode, file, args)`38013802#### `os.spawnvpe(mode, file, args, env)`38033804Выполняет программу *path* в новом процессе.38053806(Обратите внимание, что модуль [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess) предоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно см. раздел [Замена старых функций модулем subprocess](https://python-all.ru/3.16/library/subprocess.html#subprocess-replacements).)38073808Если *mode* равен [`P_NOWAIT`](https://python-all.ru/3.16/library/os.html#os.P_NOWAIT), эта функция возвращает идентификатор нового процесса; если *mode* равен [`P_WAIT`](https://python-all.ru/3.16/library/os.html#os.P_WAIT), возвращает код выхода процесса, если он завершился нормально, или `-signal`, где *signal* – сигнал, который завершил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid).38093810Примечание: в VxWorks эта функция не возвращает `-signal`, когда новый процесс завершается. Вместо этого она вызывает исключение OSError.38113812Варианты «l» и «v» функций `spawn*` различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `spawnl*()`. Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр *args*. В любом случае, аргументы дочернего процесса должны начинаться с имени выполняемой команды.38133814Варианты, содержащие вторую «p» в конце (`spawnlp()`, `spawnlpe()`, `spawnvp()` и `spawnvpe()`), используют переменную окружения `PATH` для поиска программы *file*. При замене окружения (с помощью одного из вариантов `spawn*e`, обсуждаемых в следующем абзаце) новое окружение используется как источник переменной `PATH`. Другие варианты, `spawnl()`, `spawnle()`, `spawnv()` и `spawnve()`, не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.38153816Для `spawnle()`, `spawnlpe()`, `spawnve()` и `spawnvpe()` (обратите внимание, все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции `spawnl()`, `spawnlp()`, `spawnv()` и `spawnvp()` заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре *env* должны быть строками; недопустимые ключи или значения приведут к ошибке функции с возвращаемым значением `127`.38173818В качестве примера следующие вызовы `spawnlp()` и `spawnvpe()` эквивалентны:38193820```python3821import os3822os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')38233824L = ['cp', 'index.html', '/dev/null']3825os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)3826```38273828Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.spawn` с аргументами `mode`, `path`, `args`, `env`.38293830[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не Android, не iOS.38313832`spawnlp()`, `spawnlpe()`, `spawnvp()` и `spawnvpe()` недоступны на Windows. `spawnle()` и `spawnve()` не являются потокобезопасными на Windows; вместо них рекомендуется использовать модуль [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess).38333834Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.16/glossary.html#term-path-like-object).38353836[Мягкое устаревание](https://python-all.ru/3.16/glossary.html#term-soft-deprecated) с версии 3.14: Вместо этого рекомендуется модуль [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess).38373838#### `os.P_NOWAIT`38393840#### `os.P_NOWAITO`38413842Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.16/library/os.html#os.spawnl). Если указано любое из этих значений, функции `spawn*` возвращаются сразу после создания нового процесса, возвращая его идентификатор в качестве возвращаемого значения.38433844[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.38453846#### `os.P_WAIT`38473848Возможное значение параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.16/library/os.html#os.spawnl). Если указано это значение как *mode*, функции `spawn*` не вернутся, пока новый процесс не завершится, и вернут код выхода процесса в случае успешного завершения, или `-signal`, если сигнал завершит процесс.38493850[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.38513852#### `os.P_DETACH`38533854#### `os.P_OVERLAY`38553856Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.16/library/os.html#os.spawnl). Они менее переносимы, чем перечисленные выше. [`P_DETACH`](https://python-all.ru/3.16/library/os.html#os.P_DETACH) аналогичен [`P_NOWAIT`](https://python-all.ru/3.16/library/os.html#os.P_NOWAIT), но новый процесс отсоединяется от консоли вызывающего процесса. Если используется [`P_OVERLAY`](https://python-all.ru/3.16/library/os.html#os.P_OVERLAY), текущий процесс будет заменён; функция `spawn*` не вернётся.38573858[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.38593860#### `os.startfile(path[, operation][, arguments][, cwd][, show_cmd])`38613862Запускает файл в связанном с ним приложении.38633864Если *operation* не указан, это действует как двойной щелчок по файлу в проводнике Windows или передача имени файла в качестве аргумента команде **start** из интерактивной командной оболочки: файл открывается в том приложении (если оно есть), с которым связано его расширение.38653866Если указана другая *operation*, это должна быть «глагольная команда», которая определяет, что нужно сделать с файлом. Обычные глаголы, документированные Microsoft: `'open'`, `'print'` и `'edit'` (для файлов), а также `'explore'` и `'find'` (для каталогов).38673868При запуске приложения укажите *arguments* для передачи в виде одной строки. Этот аргумент может не иметь эффекта при использовании этой функции для запуска документа.38693870Рабочий каталог по умолчанию наследуется, но может быть переопределён аргументом *cwd*. Он должен быть абсолютным путём. Относительный *путь* будет разрешаться относительно этого аргумента.38713872Используйте *show\_cmd*, чтобы переопределить стиль окна по умолчанию. Будет ли это иметь какой-либо эффект, зависит от запускаемого приложения. Значения – целые числа, поддерживаемые функцией Win32 `ShellExecute()`.38733874`startfile()` возвращает управление сразу после запуска соответствующего приложения. Невозможно дождаться закрытия приложения или получить его код возврата. Параметр *path* задаётся относительно текущего каталога или *cwd*. Если нужно использовать абсолютный путь, убедитесь, что первый символ не является косой чертой (`'/'`). Используйте [`pathlib`](https://python-all.ru/3.16/library/pathlib.html#module-pathlib) или функцию [`os.path.normpath()`](https://python-all.ru/3.16/library/os.path.html#os.path.normpath), чтобы пути были корректно закодированы для Win32.38753876Чтобы снизить накладные расходы на запуск интерпретатора, функция Win32 `ShellExecute()` не разрешается до первого вызова данной функции. Если функцию не удаётся разрешить, будет возбуждено [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).38773878Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.startfile` с аргументами `path`, `operation`.38793880Возбуждает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.startfile/2` с аргументами `path`, `operation`, `arguments`, `cwd`, `show_cmd`.38813882[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Windows.38833884Изменено в версии 3.10: Добавлены аргументы *arguments*, *cwd* и *show\_cmd*, а также событие аудита `os.startfile/2`.38853886#### `os.system(command)`38873888Выполняет команду (строку) в подпроцессе. Реализована вызовом стандартной функции C `system()` и имеет те же ограничения. Изменения [`sys.stdin`](https://python-all.ru/3.16/library/sys.html#sys.stdin) и т.д. не отражаются в окружении выполняемой команды. Если *command* генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет смысл возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.38893890В Unix возвращаемое значение – это статус выхода процесса, закодированный в формате, указанном для [`wait()`](https://python-all.ru/3.16/library/os.html#os.wait).38913892В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения *command*. Оболочка задаётся переменной окружения Windows `COMSPEC`: обычно это **cmd.exe**, которая возвращает статус выхода выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.38933894Модуль [`subprocess`](https://python-all.ru/3.16/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; рекомендуется использовать этот модуль вместо данной функции. См. раздел [Замена устаревших функций модулем subprocess](https://python-all.ru/3.16/library/subprocess.html#subprocess-replacements) в документации `subprocess` для полезных примеров.38953896В Unix [`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования результата (статуса выхода) в код возврата. В Windows результат напрямую является кодом возврата.38973898Вызывает [событие аудита](https://python-all.ru/3.16/library/sys.html#auditing) `os.system` с аргументом `command`.38993900[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не Android, не iOS.39013902#### `os.times()`39033904Возвращает текущие глобальные времена процесса. Возвращаемое значение – объект с пятью атрибутами:39053906- `user` – пользовательское время3907- `system` – системное время3908- `children_user` – пользовательское время всех дочерних процессов3909- `children_system` – системное время всех дочерних процессов3910- `elapsed` – прошедшее реальное время с фиксированной точки в прошлом39113912Для обратной совместимости этот объект также ведёт себя как кортеж из пяти элементов, содержащий `user`, `system`, `children_user`, `children_system` и `elapsed` в указанном порядке.39133914См. страницу руководства Unix *[times(2)](https://python-all.ru/3.16/library/os.html)* и страницу [times(3)](https://python-all.ru/3.16/library/os.html) в Unix или [GetProcessTimes в MSDN](https://python-all.ru/3.16/library/os.html) в Windows. В Windows известны только `user` и `system`; остальные атрибуты равны нулю.39153916[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows.39173918Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.39193920#### `os.wait()`39213922Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.39233924Если нет дочерних процессов, которых можно ожидать, возбуждается [`ChildProcessError`](https://python-all.ru/3.16/library/exceptions.html#ChildProcessError).39253926[`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.39273928[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.39293930> **См. также**3931>3932> Другие функции `wait*()`, описанные ниже, можно использовать для ожидания завершения конкретного дочернего процесса; они предоставляют больше возможностей. [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid) – единственная из них, также доступная в Windows.39333934#### `os.waitid(idtype, id, options, /)`39353936Ожидает завершения дочернего процесса.39373938*idtype* может быть [`P_PID`](https://python-all.ru/3.16/library/os.html#os.P_PID), [`P_PGID`](https://python-all.ru/3.16/library/os.html#os.P_PGID), [`P_ALL`](https://python-all.ru/3.16/library/os.html#os.P_ALL) или (в Linux) [`P_PIDFD`](https://python-all.ru/3.16/library/os.html#os.P_PIDFD). Интерпретация *id* зависит от него; смотрите их индивидуальные описания.39393940*options* – это комбинация флагов по ИЛИ. Требуется хотя бы один из [`WEXITED`](https://python-all.ru/3.16/library/os.html#os.WEXITED), [`WSTOPPED`](https://python-all.ru/3.16/library/os.html#os.WSTOPPED) или [`WCONTINUED`](https://python-all.ru/3.16/library/os.html#os.WCONTINUED); [`WNOHANG`](https://python-all.ru/3.16/library/os.html#os.WNOHANG) и [`WNOWAIT`](https://python-all.ru/3.16/library/os.html#os.WNOWAIT) – дополнительные необязательные флаги.39413942Возвращаемое значение – объект, представляющий данные, содержащиеся в структуре `siginfo_t`, со следующими атрибутами:39433944- `si_pid` (идентификатор процесса)3945- `si_uid` (реальный идентификатор пользователя дочернего процесса)3946- `si_signo` (всегда [`SIGCHLD`](https://python-all.ru/3.16/library/signal.html#signal.SIGCHLD))3947- `si_status` (статус завершения или номер сигнала, в зависимости от `si_code`)3948- `si_code` (см. [`CLD_EXITED`](https://python-all.ru/3.16/library/os.html#os.CLD_EXITED) для возможных значений)39493950Если указан [`WNOHANG`](https://python-all.ru/3.16/library/os.html#os.WNOHANG) и нет подходящих дочерних процессов в запрошенном состоянии, возвращается `None`. Иначе, если нет подходящих дочерних процессов, которые можно ожидать, возбуждается [`ChildProcessError`](https://python-all.ru/3.16/library/exceptions.html#ChildProcessError).39513952[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.39533954Добавлено в версии 3.3.39553956Изменено в версии 3.13: Эта функция теперь доступна также на macOS.39573958#### `os.waitpid(pid, options, /)`39593960Подробности этой функции различаются в Unix и Windows.39613962В Unix: ожидает завершения дочернего процесса, заданного идентификатором процесса *pid*, и возвращает кортеж, содержащий его идентификатор процесса и индикатор статуса завершения (закодированный как для [`wait()`](https://python-all.ru/3.16/library/os.html#os.wait)). Семантика вызова зависит от значения целочисленного параметра *options*, который должен быть `0` для нормальной работы.39633964Если *pid* больше `0`, `waitpid()` запрашивает информацию о состоянии для этого конкретного процесса. Если *pid* равен `0`, запрос выполняется для состояния любого дочернего процесса в группе процессов текущего процесса. Если *pid* равен `-1`, запрос относится к любому дочернему процессу текущего процесса. Если *pid* меньше `-1`, запрашивается состояние для любого процесса в группе процессов `-pid` (абсолютное значение *pid*).39653966*options* представляет собой побитовое ИЛИ флагов. Если он содержит [`WNOHANG`](https://python-all.ru/3.16/library/os.html#os.WNOHANG) и нет подходящих дочерних процессов в запрошенном состоянии, возвращается `(0, 0)`. Иначе, если нет подходящих дочерних процессов, которые можно ожидать, возбуждается [`ChildProcessError`](https://python-all.ru/3.16/library/exceptions.html#ChildProcessError). Другие параметры, которые можно использовать: [`WUNTRACED`](https://python-all.ru/3.16/library/os.html#os.WUNTRACED) и [`WCONTINUED`](https://python-all.ru/3.16/library/os.html#os.WCONTINUED).39673968В Windows: ожидает завершения процесса, заданного дескриптором процесса *pid*, и возвращает кортеж, содержащий *pid* и его статус завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). *pid*, меньший или равный `0`, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного параметра *options* не влияет на результат. *pid* может относиться к любому процессу, чей идентификатор известен, не обязательно дочернему. Функции [`spawn*`](https://python-all.ru/3.16/library/os.html#os.spawnl), вызванные с [`P_NOWAIT`](https://python-all.ru/3.16/library/os.html#os.P_NOWAIT), возвращают подходящие дескрипторы процессов.39693970[`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.39713972[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не Android, не iOS.39733974Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.16/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.16/library/os.html) для обоснования).39753976#### `os.wait3(options)`39773978Похожа на [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), за исключением того, что аргумент идентификатора процесса не передаётся, и возвращается кортеж из 3 элементов, содержащий идентификатор процесса дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. [`resource.getrusage()`](https://python-all.ru/3.16/library/resource.html#resource.getrusage). Аргумент *options* такой же, как в `waitpid()` и [`wait4()`](https://python-all.ru/3.16/library/os.html#os.wait4).39793980[`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.39813982[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.39833984#### `os.wait4(pid, options)`39853986Похожа на [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор процесса дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. [`resource.getrusage()`](https://python-all.ru/3.16/library/resource.html#resource.getrusage). Аргументы `wait4()` такие же, как в `waitpid()`.39873988[`waitstatus_to_exitcode()`](https://python-all.ru/3.16/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.39893990[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.39913992#### `os.P_PID`39933994#### `os.P_PGID`39953996#### `os.P_ALL`39973998#### `os.P_PIDFD`39994000Это возможные значения для *idtype* в [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid). Они влияют на то, как интерпретируется *id*:40014002- `P_PID` – ожидать дочерний процесс, чей PID равен *id*.4003- `P_PGID` – ожидать любой дочерний процесс, чей идентификатор группы процессов равен *id*.4004- `P_ALL` – ожидать любой дочерний процесс; *id* игнорируется.4005- `P_PIDFD` – ожидать дочерний процесс, заданный файловым дескриптором *id* (дескриптор процесса, созданный с помощью [`pidfd_open()`](https://python-all.ru/3.16/library/os.html#os.pidfd_open)).40064007[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40084009> **Примечание**4010>4011> `P_PIDFD` доступен только в Linux \>= 5.4.40124013Добавлено в версии 3.3.40144015Добавлено в версии 3.9: Константа `P_PIDFD`.40164017#### `os.WCONTINUED`40184019Этот флаг *options* для [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), [`wait3()`](https://python-all.ru/3.16/library/os.html#os.wait3), [`wait4()`](https://python-all.ru/3.16/library/os.html#os.wait4) и [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid) заставляет сообщать о дочерних процессах, если они были продолжены после остановки управления заданиями с момента последнего сообщения.40204021[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40224023#### `os.WEXITED`40244025Этот флаг *options* для [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid) заставляет сообщать о дочерних процессах, которые завершились.40264027Другие функции `wait*` всегда сообщают о завершившихся дочерних процессах, поэтому этот параметр для них недоступен.40284029[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40304031Добавлено в версии 3.3.40324033#### `os.WSTOPPED`40344035Этот флаг *options* для [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid) заставляет сообщать о дочерних процессах, которые были остановлены доставкой сигнала.40364037Этот параметр недоступен для других функций `wait*`.40384039[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40404041Добавлено в версии 3.3.40424043#### `os.WUNTRACED`40444045Этот флаг *options* для [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), [`wait3()`](https://python-all.ru/3.16/library/os.html#os.wait3) и [`wait4()`](https://python-all.ru/3.16/library/os.html#os.wait4) заставляет также сообщать о дочерних процессах, если они были остановлены, но их текущее состояние не сообщалось с момента остановки.40464047Этот параметр недоступен для [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid).40484049[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40504051#### `os.WNOHANG`40524053Этот флаг *options* заставляет [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), [`wait3()`](https://python-all.ru/3.16/library/os.html#os.wait3), [`wait4()`](https://python-all.ru/3.16/library/os.html#os.wait4) и [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid) возвращаться немедленно, если статус дочернего процесса недоступен сразу.40544055[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40564057#### `os.WNOWAIT`40584059Этот флаг *options* заставляет [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid) оставить дочерний процесс в состоянии ожидания, чтобы позднее можно было использовать вызов `wait*()` для повторного получения информации о статусе дочернего процесса.40604061Этот параметр недоступен для других функций `wait*`.40624063[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40644065#### `os.CLD_EXITED`40664067#### `os.CLD_KILLED`40684069#### `os.CLD_DUMPED`40704071#### `os.CLD_TRAPPED`40724073#### `os.CLD_STOPPED`40744075#### `os.CLD_CONTINUED`40764077Это возможные значения для `si_code` в результате, возвращаемом [`waitid()`](https://python-all.ru/3.16/library/os.html#os.waitid).40784079[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.40804081Добавлено в версии 3.3.40824083Изменено в версии 3.9: Добавлены значения `CLD_KILLED` и `CLD_STOPPED`.40844085#### `os.waitstatus_to_exitcode(status)`40864087Преобразует статус ожидания в код возврата.40884089В Unix:40904091- Если процесс завершился нормально (если `WIFEXITED(status)` истинно), возвращает статус выхода процесса (возвращает `WEXITSTATUS(status)`): результат больше или равен 0.4092- Если процесс был завершён сигналом (если `WIFSIGNALED(status)` истинно), возвращает `-signum`, где *signum* – это номер сигнала, который привёл к завершению процесса (возвращает `-WTERMSIG(status)`): результат меньше 0.4093- В противном случае возбуждает [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError).40944095В Windows возвращает *status*, сдвинутый вправо на 8 бит.40964097В Unix, если процесс трассируется или [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid) был вызван с опцией [`WUNTRACED`](https://python-all.ru/3.16/library/os.html#os.WUNTRACED), вызывающая сторона должна сначала проверить, истинно ли `WIFSTOPPED(status)`. Эта функция не должна вызываться, если `WIFSTOPPED(status)` истинно.40984099> **См. также**4100>4101> [`WIFEXITED()`](https://python-all.ru/3.16/library/os.html#os.WIFEXITED), [`WEXITSTATUS()`](https://python-all.ru/3.16/library/os.html#os.WEXITSTATUS), [`WIFSIGNALED()`](https://python-all.ru/3.16/library/os.html#os.WIFSIGNALED), [`WTERMSIG()`](https://python-all.ru/3.16/library/os.html#os.WTERMSIG), [`WIFSTOPPED()`](https://python-all.ru/3.16/library/os.html#os.WIFSTOPPED), [`WSTOPSIG()`](https://python-all.ru/3.16/library/os.html#os.WSTOPSIG) функции.41024103[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, Windows, не WASI, не Android, не iOS.41044105Добавлено в версии 3.9.41064107Следующие функции принимают код состояния процесса, возвращаемый [`system()`](https://python-all.ru/3.16/library/os.html#os.system), [`wait()`](https://python-all.ru/3.16/library/os.html#os.wait) или [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid), в качестве параметра. Они могут использоваться для определения статуса процесса.41084109#### `os.WCOREDUMP(status, /)`41104111Возвращает `True`, если для процесса был создан дамп ядра, в противном случае возвращает `False`.41124113Эту функцию следует использовать, только если [`WIFSIGNALED()`](https://python-all.ru/3.16/library/os.html#os.WIFSIGNALED) истинно.41144115[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41164117#### `os.WIFCONTINUED(status)`41184119Возвращает `True`, если остановленный дочерний процесс был возобновлён доставкой [`SIGCONT`](https://python-all.ru/3.16/library/signal.html#signal.SIGCONT) (если процесс был продолжен после остановки управления заданиями), в противном случае возвращает `False`.41204121См. опцию [`WCONTINUED`](https://python-all.ru/3.16/library/os.html#os.WCONTINUED).41224123[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41244125#### `os.WIFSTOPPED(status)`41264127Возвращает `True`, если процесс был остановлен доставкой сигнала, в противном случае возвращает `False`.41284129`WIFSTOPPED()` возвращает `True` только если вызов [`waitpid()`](https://python-all.ru/3.16/library/os.html#os.waitpid) был выполнен с опцией [`WUNTRACED`](https://python-all.ru/3.16/library/os.html#os.WUNTRACED) или когда процесс трассируется (см. *[ptrace(2)](https://python-all.ru/3.16/library/os.html)*).41304131[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41324133#### `os.WIFSIGNALED(status)`41344135Возвращает `True`, если процесс был завершён сигналом, в противном случае возвращает `False`.41364137[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41384139#### `os.WIFEXITED(status)`41404141Возвращает `True`, если процесс завершился нормально, то есть вызовом `exit()` или `_exit()`, или возвратом из `main()`; в противном случае возвращает `False`.41424143[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41444145#### `os.WEXITSTATUS(status)`41464147Возвращает код завершения процесса.41484149Эту функцию следует использовать, только если [`WIFEXITED()`](https://python-all.ru/3.16/library/os.html#os.WIFEXITED) истинно.41504151[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41524153#### `os.WSTOPSIG(status)`41544155Возвращает сигнал, который вызвал остановку процесса.41564157Эту функцию следует использовать, только если [`WIFSTOPPED()`](https://python-all.ru/3.16/library/os.html#os.WIFSTOPPED) истинно.41584159[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41604161#### `os.WTERMSIG(status)`41624163Возвращает номер сигнала, который вызвал завершение процесса.41644165Эту функцию следует использовать, только если [`WIFSIGNALED()`](https://python-all.ru/3.16/library/os.html#os.WIFSIGNALED) истинно.41664167[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix, не WASI, не Android, не iOS.41684169## Интерфейс к планировщику41704171Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.41724173Добавлено в версии 3.3.41744175Следующие политики планирования доступны, если они поддерживаются операционной системой.41764177#### `os.SCHED_OTHER`41784179Политика планирования по умолчанию.41804181#### `os.SCHED_BATCH`41824183Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.41844185#### `os.SCHED_DEADLINE`41864187Политика планирования для задач с ограничениями по времени выполнения.41884189Добавлено в версии 3.14.41904191#### `os.SCHED_IDLE`41924193Политика планирования для фоновых задач с очень низким приоритетом.41944195#### `os.SCHED_NORMAL`41964197Псевдоним для [`SCHED_OTHER`](https://python-all.ru/3.16/library/os.html#os.SCHED_OTHER).41984199Добавлено в версии 3.14.42004201#### `os.SCHED_SPORADIC`42024203Политика планирования для спорадических серверных программ.42044205#### `os.SCHED_FIFO`42064207Политика планирования «первым пришёл, первым обслужен».42084209#### `os.SCHED_RR`42104211Циклическая политика планирования.42124213#### `os.SCHED_RESET_ON_FORK`42144215Этот флаг можно объединить с любой другой политикой планирования с помощью ИЛИ. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет дочернего процесса сбрасываются на значения по умолчанию.42164217#### `class os.sched_param(sched_priority)`42184219Этот класс представляет настраиваемые параметры планирования, используемые в [`sched_setparam()`](https://python-all.ru/3.16/library/os.html#os.sched_setparam), [`sched_setscheduler()`](https://python-all.ru/3.16/library/os.html#os.sched_setscheduler) и [`sched_getparam()`](https://python-all.ru/3.16/library/os.html#os.sched_getparam). Он неизменяем.42204221В настоящее время существует только один возможный параметр:42224223#### `sched_priority`42244225Приоритет планирования для политики планирования.42264227#### `os.sched_get_priority_min(policy)`42284229Возвращает минимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.42304231#### `os.sched_get_priority_max(policy)`42324233Возвращает максимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.42344235#### `os.sched_setscheduler(pid, policy, param, /)`42364237Устанавливает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. *policy* – одна из констант политик планирования, описанных выше. *param* – экземпляр [`sched_param`](https://python-all.ru/3.16/library/os.html#os.sched_param).42384239#### `os.sched_getscheduler(pid, /)`42404241Возвращает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.42424243#### `os.sched_setparam(pid, param, /)`42444245Устанавливает параметры планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. *param* – экземпляр [`sched_param`](https://python-all.ru/3.16/library/os.html#os.sched_param).42464247#### `os.sched_getparam(pid, /)`42484249Возвращает параметры планирования в виде экземпляра [`sched_param`](https://python-all.ru/3.16/library/os.html#os.sched_param) для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс.42504251#### `os.sched_rr_get_interval(pid, /)`42524253Возвращает квант времени (round-robin) в секундах для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс.42544255#### `os.sched_yield()`42564257Добровольно отдаёт управление процессором. Подробнее см. *[sched\_yield(2)](https://python-all.ru/3.16/library/os.html)*.42584259#### `os.sched_setaffinity(pid, mask, /)`42604261Ограничивает процесс с PID *pid* (или текущий процесс, если ноль) набором процессоров. Параметр *mask* – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.42624263#### `os.sched_getaffinity(pid, /)`42644265Возвращает набор процессоров, к которым ограничен процесс с PID *pid*.42664267Если *pid* равен нулю, возвращает набор процессоров, к которым ограничен вызывающий поток текущего процесса.42684269См. также функцию [`process_cpu_count()`](https://python-all.ru/3.16/library/os.html#os.process_cpu_count).42704271## Различная системная информация42724273#### `os.confstr(name, /)`42744275Возвращает строковые значения системной конфигурации. *name* задаёт извлекаемое значение; это может быть строка – имя определённого системного значения; такие имена заданы в ряде стандартов (POSIX, Unix 95, Unix 98 и других). На некоторых платформах определены и дополнительные имена. Имена, известные хост-операционной системе, представлены в виде ключей словаря `confstr_names`. Для тех переменных конфигурации, которых нет в этом отображении, также допускается передавать целое число в качестве *name*.42764277Если значение конфигурации, указанное *name*, не определено, возвращается `None`.42784279Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.16/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `confstr_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.16/library/errno.html#errno.EINVAL) в качестве кода ошибки.42804281[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.42824283#### `os.confstr_names`42844285Словарь, отображающий имена, принимаемые [`confstr()`](https://python-all.ru/3.16/library/os.html#os.confstr), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.42864287[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.42884289#### `os.cpu_count()`42904291Возвращает количество логических процессоров в **системе**. Возвращает `None`, если не удаётся определить.42924293Функция [`process_cpu_count()`](https://python-all.ru/3.16/library/os.html#os.process_cpu_count) может использоваться для получения количества логических процессоров, доступных вызывающему потоку **текущего процесса**.42944295Добавлено в версии 3.4.42964297Изменено в версии 3.13: Если указан [`-X cpu_count`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) или установлен [`PYTHON_CPU_COUNT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_CPU_COUNT), функция `cpu_count()` возвращает переопределённое значение *n*.42984299#### `os.getloadavg()`43004301Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает исключение [`OSError`](https://python-all.ru/3.16/library/exceptions.html#OSError), если среднюю нагрузку получить не удалось.43024303[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.43044305#### `os.process_cpu_count()`43064307Получает количество логических процессоров, доступных вызывающему потоку **текущего процесса**. Возвращает `None`, если не удаётся определить. Может быть меньше [`cpu_count()`](https://python-all.ru/3.16/library/os.html#os.cpu_count) в зависимости от привязки к процессорам (CPU affinity).43084309Функция [`cpu_count()`](https://python-all.ru/3.16/library/os.html#os.cpu_count) может использоваться для получения количества логических процессоров в **системе**.43104311Если указан [`-X cpu_count`](https://python-all.ru/3.16/using/cmdline.html#cmdoption-X) или установлен [`PYTHON_CPU_COUNT`](https://python-all.ru/3.16/using/cmdline.html#envvar-PYTHON_CPU_COUNT), функция `process_cpu_count()` возвращает переопределённое значение *n*.43124313См. также функцию [`sched_getaffinity()`](https://python-all.ru/3.16/library/os.html#os.sched_getaffinity).43144315Добавлено в версии 3.13.43164317#### `os.sysconf(name, /)`43184319Возвращает целочисленные значения системной конфигурации. Если значение конфигурации, указанное *name*, не определено, возвращается `-1`. Замечания относительно параметра *name* для [`confstr()`](https://python-all.ru/3.16/library/os.html#os.confstr) применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся `sysconf_names`.43204321[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.43224323#### `os.sysconf_names`43244325Словарь, отображающий имена, принимаемые [`sysconf()`](https://python-all.ru/3.16/library/os.html#os.sysconf), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.43264327[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Unix.43284329Изменено в версии 3.11: Добавлено имя `'SC_MINSIGSTKSZ'`.43304331Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.43324333Операции более высокого уровня с именами путей определены в модуле [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43344335#### `os.curdir`43364337Строковая константа, используемая операционной системой для обращения к текущему каталогу. Для Windows и POSIX это `'.'`. Также доступна через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43384339#### `os.pardir`43404341Строковая константа, используемая операционной системой для обращения к родительскому каталогу. Для Windows и POSIX это `'..'`. Также доступна через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43424343#### `os.sep`43444345Символ, используемый операционной системой для разделения компонентов пути. Для POSIX это `'/'`, а для Windows – `'\\'`. Имейте в виду, что одного знания этого символа недостаточно для разбора или объединения путей – используйте [`os.path.split()`](https://python-all.ru/3.16/library/os.path.html#os.path.split) и [`os.path.join()`](https://python-all.ru/3.16/library/os.path.html#os.path.join), – но иногда это бывает полезно. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43464347#### `os.altsep`43484349Альтернативный символ, используемый операционной системой для разделения компонентов пути, или `None`, если существует только один символ-разделитель. В Windows, где `sep` – обратная косая черта, этот символ равен `'/'`. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43504351#### `os.extsep`43524353Символ, отделяющий основное имя файла от расширения; например, `'.'` в `os.py`. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43544355#### `os.pathsep`43564357Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в `PATH`), например `':'` для POSIX или `';'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43584359#### `os.defpath`43604361Путь поиска по умолчанию, используемый [`exec*p*`](https://python-all.ru/3.16/library/os.html#os.execl) и [`spawn*p*`](https://python-all.ru/3.16/library/os.html#os.spawnl), если в окружении нет ключа `'PATH'`. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43624363#### `os.linesep`43644365Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например `'\n'` для POSIX, или несколько символов, например `'\r\n'` для Windows. Не используйте *os.linesep* в качестве символа конца строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте одиночный `'\n'` на всех платформах.43664367#### `os.devnull`43684369Путь к нулевому устройству. Например: `'/dev/null'` для POSIX, `'nul'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.16/library/os.path.html#module-os.path).43704371#### `os.RTLD_LAZY`43724373#### `os.RTLD_NOW`43744375#### `os.RTLD_GLOBAL`43764377#### `os.RTLD_LOCAL`43784379#### `os.RTLD_NODELETE`43804381#### `os.RTLD_NOLOAD`43824383#### `os.RTLD_DEEPBIND`43844385Флаги для использования с функциями [`setdlopenflags()`](https://python-all.ru/3.16/library/sys.html#sys.setdlopenflags) и [`getdlopenflags()`](https://python-all.ru/3.16/library/sys.html#sys.getdlopenflags). Смотрите страницу руководства Unix *[dlopen(3)](https://python-all.ru/3.16/library/os.html)*, чтобы узнать значение различных флагов.43864387Добавлено в версии 3.3.43884389## Случайные числа43904391#### `os.getrandom(size, flags=0)`43924393Возвращает до *size* случайных байт. Функция может вернуть меньше байт, чем запрошено.43944395Эти байты можно использовать для начальной инициализации генераторов случайных чисел пользовательского пространства или для криптографических целей.43964397`getrandom()` полагается на энтропию, собранную от драйверов устройств и других источников шума окружения. Чрезмерное чтение больших объёмов данных негативно скажется на других пользователях устройств `/dev/random` и `/dev/urandom`.43984399Аргумент flags представляет собой битовую маску, которая может содержать ноль или более следующих значений, объединённых операцией OR: [`os.GRND_RANDOM`](https://python-all.ru/3.16/library/os.html#os.GRND_RANDOM) и [`GRND_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.GRND_NONBLOCK).44004401См. также [справочную страницу getrandom() в Linux](https://python-all.ru/3.16/library/os.html).44024403[Доступность](https://python-all.ru/3.16/library/intro.html#availability): Linux \>= 3.17.44044405Добавлено в версии 3.6.44064407#### `os.urandom(size, /)`44084409Возвращает строку байтов длины *size* со случайными байтами, пригодными для использования в криптографии.44104411Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.44124413В Linux, если доступен системный вызов `getrandom()`, он используется в блокирующем режиме: блокировка до инициализации пула энтропии urandom (ядро собирает 128 бит энтропии). Обоснование см. в [**PEP 524**](https://python-all.ru/3.16/library/os.html). В Linux функция [`getrandom()`](https://python-all.ru/3.16/library/os.html#os.getrandom) может использоваться для получения случайных байтов в неблокирующем режиме (с помощью флага [`GRND_NONBLOCK`](https://python-all.ru/3.16/library/os.html#os.GRND_NONBLOCK)) или для опроса до инициализации пула энтропии urandom.44144415В Unix-подобных системах случайные байты читаются из устройства `/dev/urandom`. Если устройство `/dev/urandom` недоступно или нечитаемо, возбуждается исключение [`NotImplementedError`](https://python-all.ru/3.16/library/exceptions.html#NotImplementedError).44164417В Windows используется `BCryptGenRandom()`.44184419> **См. также**4420>4421> Модуль [`secrets`](https://python-all.ru/3.16/library/secrets.html#module-secrets) предоставляет функции более высокого уровня. Для удобного интерфейса к генератору случайных чисел, предоставляемому платформой, см. [`random.SystemRandom`](https://python-all.ru/3.16/library/random.html#random.SystemRandom).44224423Изменено в версии 3.5: В Linux 3.17 и новее теперь используется системный вызов `getrandom()`, когда он доступен. В OpenBSD 5.6 и новее теперь используется функция C `getentropy()`. Эти функции позволяют избежать использования внутреннего файлового дескриптора.44244425Изменено в версии 3.5.2: В Linux, если системный вызов `getrandom()` блокируется (пул энтропии urandom ещё не инициализирован), выполняется чтение из `/dev/urandom`.44264427Изменено в версии 3.6: В Linux `getrandom()` теперь используется в блокирующем режиме для повышения безопасности.44284429Изменено в версии 3.11: В Windows `BCryptGenRandom()` используется вместо `CryptGenRandom()`, который устарел.44304431#### `os.GRND_NONBLOCK`44324433По умолчанию при чтении из `/dev/random` [`getrandom()`](https://python-all.ru/3.16/library/os.html#os.getrandom) блокируется, если нет доступных случайных байтов, а при чтении из `/dev/urandom` блокируется, если пул энтропии ещё не инициализирован.44344435Если установлен флаг `GRND_NONBLOCK`, то [`getrandom()`](https://python-all.ru/3.16/library/os.html#os.getrandom) не блокируется в этих случаях, а вместо этого немедленно возбуждает [`BlockingIOError`](https://python-all.ru/3.16/library/exceptions.html#BlockingIOError).44364437Добавлено в версии 3.6.44384439#### `os.GRND_RANDOM`44404441Если этот бит установлен, то случайные байты берутся из пула `/dev/random` вместо пула `/dev/urandom`.44424443Добавлено в версии 3.6.4444