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

os.md

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

1> **Источник:** https://python-all.ru/3.9/library/os.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`os`](https://python-all.ru/3.9/library/os.html#module-os) – Различные интерфейсы операционной системы89**Исходный код:** [Lib/os.py](https://python-all.ru/src/3.9/Lib/os.py)1011---1213Этот модуль предоставляет переносимый способ использования функций, зависящих от операционной системы. Если нужно просто прочитать или записать файл, см. [`open()`](https://python-all.ru/3.9/library/functions.html#open); для работы с путями используйте модуль [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path); для чтения всех строк из всех файлов в командной строке – модуль [`fileinput`](https://python-all.ru/3.9/library/fileinput.html#module-fileinput). Для создания временных файлов и каталогов обратитесь к модулю [`tempfile`](https://python-all.ru/3.9/library/tempfile.html#module-tempfile), а для высокоуровневой работы с файлами и каталогами – к модулю [`shutil`](https://python-all.ru/3.9/library/shutil.html#module-shutil).1415Примечания о доступности этих функций:1617- Все встроенные модули Python, зависящие от операционной системы, устроены так, что при наличии одинаковой функциональности они используют один и тот же интерфейс; например, функция `os.stat(path)` возвращает информацию stat о *пути* в одном и том же формате (который, как вышло, берёт начало от интерфейса POSIX).18- Расширения, характерные для конкретной операционной системы, также доступны через модуль [`os`](https://python-all.ru/3.9/library/os.html#module-os), но их использование, конечно, угрожает переносимости.19- Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.20- На VxWorks os.fork, os.execv и os.spawn\*p\* не поддерживаются.2122> **Примечание**23>24> Все функции в этом модуле возбуждают [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) (или его подклассы) в случае недопустимых или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.2526#### `exception os.error`2728Псевдоним для встроенного исключения [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError).2930#### `os.name`3132Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: `'posix'`, `'nt'`, `'java'`.3334> **См. также**35>36> [`sys.platform`](https://python-all.ru/3.9/library/sys.html#sys.platform) имеет более мелкую гранулярность. [`os.uname()`](https://python-all.ru/3.9/library/os.html#os.uname) предоставляет системно-зависимую информацию о версии.37>38> Модуль [`platform`](https://python-all.ru/3.9/library/platform.html#module-platform) предоставляет подробные проверки идентификации системы.3940## Имена файлов, аргументы командной строки и переменные окружения4142В Python имена файлов, аргументы командной строки и переменные окружения представляются строковым типом. В некоторых системах перед передачей операционной системе эти строки необходимо декодировать из байтов и в байты. Python использует кодировку файловой системы для выполнения этого преобразования (см. [`sys.getfilesystemencoding()`](https://python-all.ru/3.9/library/sys.html#sys.getfilesystemencoding)).4344Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует [обработчик ошибок кодирования surrogateescape](https://python-all.ru/3.9/library/codecs.html#surrogateescape), что означает, что нераскодируемые байты заменяются на символ Unicode U+DCxx при декодировании, а затем снова преобразуются в исходные байты при кодировании.4546Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может этого гарантировать, функции API могут вызывать исключения Unicode.4748## Параметры процесса4950Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.5152#### `os.ctermid()`5354Возвращает имя файла, соответствующее управляющему терминалу процесса.5556[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.5758#### `os.environ`5960Объект [отображения](https://python-all.ru/3.9/glossary.html#term-mapping), ключи и значения которого являются строками, представляющими окружение процесса. Например, `environ['HOME']` – это путь к вашему домашнему каталогу (на некоторых платформах), что эквивалентно `getenv("HOME")` в C.6162Это отображение захватывается при первом импорте модуля [`os`](https://python-all.ru/3.9/library/os.html#module-os), обычно во время запуска Python при обработке `site.py`. Изменения окружения, сделанные после этого момента, не отражаются в [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), за исключением изменений, выполненных путём прямого изменения [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ).6364Это отображение можно использовать как для запроса окружения, так и для его изменения. [`putenv()`](https://python-all.ru/3.9/library/os.html#os.putenv) будет вызываться автоматически при изменении отображения.6566В Unix ключи и значения используют [`sys.getfilesystemencoding()`](https://python-all.ru/3.9/library/sys.html#sys.getfilesystemencoding) и обработчик ошибок `'surrogateescape'`. Используйте [`environb`](https://python-all.ru/3.9/library/os.html#os.environb), если требуется другая кодировка.6768> **Примечание**69>70> Вызов [`putenv()`](https://python-all.ru/3.9/library/os.html#os.putenv) напрямую не изменяет [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), поэтому лучше изменять [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ).7172> **Примечание**73>74> На некоторых платформах, включая FreeBSD и macOS, установка `environ` может приводить к утечкам памяти. Обратитесь к системной документации по `putenv()`.7576Можно удалять элементы из этого отображения, чтобы исключать переменные окружения. [`unsetenv()`](https://python-all.ru/3.9/library/os.html#os.unsetenv) будет вызываться автоматически при удалении элемента из [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), а также при вызове одного из методов `pop()` или `clear()`.7778Изменено в версии 3.9: Обновлено для поддержки операторов объединения (`|`) и обновления (`|=`) из [**PEP 584**](https://python-all.ru/3.9/library/os.html).7980#### `os.environb`8182Байтовая версия [`environ`](https://python-all.ru/3.9/library/os.html#os.environ): объект [отображения](https://python-all.ru/3.9/glossary.html#term-mapping), где и ключи, и значения являются объектами [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes), представляющими окружение процесса. [`environ`](https://python-all.ru/3.9/library/os.html#os.environ) и [`environb`](https://python-all.ru/3.9/library/os.html#os.environb) синхронизированы (изменение [`environb`](https://python-all.ru/3.9/library/os.html#os.environb) обновляет [`environ`](https://python-all.ru/3.9/library/os.html#os.environ), и наоборот).8384[`environb`](https://python-all.ru/3.9/library/os.html#os.environb) доступен только в том случае, если [`supports_bytes_environ`](https://python-all.ru/3.9/library/os.html#os.supports_bytes_environ) равен `True`.8586Новое в версии 3.2.8788Изменено в версии 3.9: Обновлено для поддержки операторов объединения (`|`) и обновления (`|=`) из [**PEP 584**](https://python-all.ru/3.9/library/os.html).8990#### `os.chdir(path)`9192#### `os.fchdir(fd)`9394#### `os.getcwd()`9596Эти функции описаны в [Files and Directories](https://python-all.ru/3.9/library/os.html#os-file-dir).9798#### `os.fsencode(filename)`99100Кодирует [подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) *filename* в кодировку файловой системы с обработчиком ошибок `'surrogateescape'`, или `'strict'` в Windows; возвращает [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes) без изменений.101102[`fsdecode()`](https://python-all.ru/3.9/library/os.html#os.fsdecode) – обратная функция.103104Новое в версии 3.2.105106Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike) .107108#### `os.fsdecode(filename)`109110Декодирует [подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) *filename* из кодировки файловой системы с обработчиком ошибок `'surrogateescape'`, или `'strict'` в Windows; возвращает [`str`](https://python-all.ru/3.9/library/stdtypes.html#str) без изменений.111112[`fsencode()`](https://python-all.ru/3.9/library/os.html#os.fsencode) – обратная функция.113114Новое в версии 3.2.115116Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс [`os.PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike) .117118#### `os.fspath(path)`119120Возвращает представление пути в файловой системе.121122Если переданы [`str`](https://python-all.ru/3.9/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes), они возвращаются без изменений. В противном случае вызывается [`__fspath__()`](https://python-all.ru/3.9/library/os.html#os.PathLike.__fspath__), и её значение возвращается, если оно является объектом [`str`](https://python-all.ru/3.9/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes). Во всех остальных случаях вызывается [`TypeError`](https://python-all.ru/3.9/library/exceptions.html#TypeError).123124Новое в версии 3.6.125126#### `class os.PathLike`127128[Абстрактный базовый класс](https://python-all.ru/3.9/glossary.html#term-abstract-base-class) для объектов, представляющих путь в файловой системе, например, [`pathlib.PurePath`](https://python-all.ru/3.9/library/pathlib.html#pathlib.PurePath).129130Новое в версии 3.6.131132#### `abstractmethod __fspath__()`133134Возвращает представление пути в файловой системе для объекта.135136Метод должен возвращать только объект [`str`](https://python-all.ru/3.9/library/stdtypes.html#str) или [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes), с предпочтением [`str`](https://python-all.ru/3.9/library/stdtypes.html#str).137138#### `os.getenv(key, default=None)`139140Возвращает значение переменной окружения *key*, если она существует, или *default*, если нет. *key*, *default* и результат имеют тип str. Обратите внимание, что поскольку [`getenv()`](https://python-all.ru/3.9/library/os.html#os.getenv) использует [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), отображение [`getenv()`](https://python-all.ru/3.9/library/os.html#os.getenv) также захватывается при импорте, и функция может не отражать будущие изменения окружения.141142В Unix ключи и значения декодируются с помощью [`sys.getfilesystemencoding()`](https://python-all.ru/3.9/library/sys.html#sys.getfilesystemencoding) и обработчика ошибок `'surrogateescape'`. Используйте [`os.getenvb()`](https://python-all.ru/3.9/library/os.html#os.getenvb), если tребуется другая кодировка.143144[Доступность](https://python-all.ru/3.9/library/intro.html#availability): большинство разновидностей Unix, Windows.145146#### `os.getenvb(key, default=None)`147148Возвращает значение переменной окружения *key*, если она существует, или *default*, если нет. *key*, *default* и результат имеют тип bytes. Обратите внимание, что поскольку [`getenvb()`](https://python-all.ru/3.9/library/os.html#os.getenvb) использует [`os.environb`](https://python-all.ru/3.9/library/os.html#os.environb), отображение [`getenvb()`](https://python-all.ru/3.9/library/os.html#os.getenvb) также захватывается при импорте, и функция может не отражать будущие изменения окружения.149150[`getenvb()`](https://python-all.ru/3.9/library/os.html#os.getenvb) доступна только если [`supports_bytes_environ`](https://python-all.ru/3.9/library/os.html#os.supports_bytes_environ) равен `True`.151152[Доступность](https://python-all.ru/3.9/library/intro.html#availability): большинство разновидностей Unix.153154Новое в версии 3.2.155156#### `os.get_exec_path(env=None)`157158Возвращает список каталогов, в которых будет выполняться поиск указанного исполняемого файла, аналогично оболочке, при запуске процесса. *env*, если указан, должен быть словарём переменных окружения, в котором искать PATH. По умолчанию, когда *env* равен `None`, используется [`environ`](https://python-all.ru/3.9/library/os.html#os.environ).159160Новое в версии 3.2.161162#### `os.getegid()`163164Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.165166[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.167168#### `os.geteuid()`169170Возвращает эффективный идентификатор пользователя текущего процесса.171172[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.173174#### `os.getgid()`175176Возвращает реальный идентификатор группы текущего процесса.177178[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.179180#### `os.getgrouplist(user, group)`181182Возвращает список идентификаторов групп, к которым принадлежит пользователь *user*. Если *group* нет в списке, он добавляется; обычно *group* задаётся как поле идентификатора группы из записи пароля для *user*, потому что иначе этот идентификатор группы может быть пропущен.183184[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.185186Новое в версии 3.3.187188#### `os.getgroups()`189190Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.191192[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.193194> **Примечание**195>196> На macOS поведение [`getgroups()`](https://python-all.ru/3.9/library/os.html#os.getgroups) несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания `10.5` или более ранней, [`getgroups()`](https://python-all.ru/3.9/library/os.html#os.getgroups) возвращает список эффективных идентификаторов групп, связанных с текущим пользовательским процессом; этот список ограничен системно определённым количеством записей, обычно 16, и может быть изменён вызовами [`setgroups()`](https://python-all.ru/3.9/library/os.html#os.setgroups) при наличии соответствующих привилегий. Если сборка выполнена с целевой версией развёртывания выше `10.5`, [`getgroups()`](https://python-all.ru/3.9/library/os.html#os.getgroups) возвращает текущий список доступа к группам для пользователя, связанного с эффективным идентификатором пользователя процесса; список доступа к группам может меняться в течение времени жизни процесса, на него не влияют вызовы [`setgroups()`](https://python-all.ru/3.9/library/os.html#os.setgroups), и его длина не ограничена 16. Значение целевой версии развёртывания, `MACOSX_DEPLOYMENT_TARGET`, можно получить с помощью [`sysconfig.get_config_var()`](https://python-all.ru/3.9/library/sysconfig.html#sysconfig.get_config_var).197198#### `os.getlogin()`199200Return 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.9/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.201202[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.203204#### `os.getpgid(pid)`205206Возвращает идентификатор группы процессов для процесса с идентификатором *pid*. Если *pid* равен 0, возвращается идентификатор группы текущего процесса.207208[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.209210#### `os.getpgrp()`211212Возвращает идентификатор текущей группы процессов.213214[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.215216#### `os.getpid()`217218Возвращает идентификатор текущего процесса.219220#### `os.getppid()`221222Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), а в Windows – тот же самый идентификатор, который к тому моменту может быть уже занят другим процессом.223224[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.225226Изменено в версии 3.2: Добавлена поддержка Windows.227228#### `os.getpriority(which, who)`229230Получает приоритет планирования программы. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.9/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.9/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.9/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для [`PRIO_PROCESS`](https://python-all.ru/3.9/library/os.html#os.PRIO_PROCESS), идентификатор группы процессов для [`PRIO_PGRP`](https://python-all.ru/3.9/library/os.html#os.PRIO_PGRP) и идентификатор пользователя для [`PRIO_USER`](https://python-all.ru/3.9/library/os.html#os.PRIO_USER)). Нулевое значение *who* обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.231232[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.233234Новое в версии 3.3.235236#### `os.PRIO_PROCESS`237238#### `os.PRIO_PGRP`239240#### `os.PRIO_USER`241242Параметры для функций [`getpriority()`](https://python-all.ru/3.9/library/os.html#os.getpriority) и [`setpriority()`](https://python-all.ru/3.9/library/os.html#os.setpriority).243244[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.245246Новое в версии 3.3.247248#### `os.getresuid()`249250Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.251252[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.253254Новое в версии 3.2.255256#### `os.getresgid()`257258Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.259260[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.261262Новое в версии 3.2.263264#### `os.getuid()`265266Возвращает реальный идентификатор пользователя текущего процесса.267268[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.269270#### `os.initgroups(username, gid)`271272Вызывает системную функцию initgroups() для инициализации списка доступа к группам, который включает все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.273274[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.275276Новое в версии 3.2.277278#### `os.putenv(key, value)`279280Устанавливает переменную окружения с именем *key* в строку *value*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.9/library/os.html#os.system), [`popen()`](https://python-all.ru/3.9/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.9/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.9/library/os.html#os.execv).281282Присваивания элементам [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ) автоматически преобразуются в соответствующие вызовы [`putenv()`](https://python-all.ru/3.9/library/os.html#os.putenv); однако вызовы [`putenv()`](https://python-all.ru/3.9/library/os.html#os.putenv) не обновляют [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), поэтому на практике предпочтительнее присваивать значения элементам [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ). Это также относится к [`getenv()`](https://python-all.ru/3.9/library/os.html#os.getenv) и [`getenvb()`](https://python-all.ru/3.9/library/os.html#os.getenvb), которые в своей реализации используют [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ) и [`os.environb`](https://python-all.ru/3.9/library/os.html#os.environb) соответственно.283284> **Примечание**285>286> На некоторых платформах, включая FreeBSD и macOS, установка `environ` может вызывать утечки памяти. Обратитесь к системной документации по `putenv()`.287288Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.putenv` с аргументами `key`, `value`.289290Изменено в версии 3.9: Теперь функция всегда доступна.291292#### `os.setegid(egid)`293294Устанавливает эффективный идентификатор группы текущего процесса.295296[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.297298#### `os.seteuid(euid)`299300Устанавливает эффективный идентификатор пользователя текущего процесса.301302[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.303304#### `os.setgid(gid)`305306Устанавливает идентификатор группы текущего процесса.307308[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.309310#### `os.setgroups(groups)`311312Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в *groups*. *groups* должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.313314[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.315316> **Примечание**317>318> В macOS длина *groups* не может превышать определённое системой максимальное количество эффективных идентификаторов групп, обычно 16. См. документацию по [`getgroups()`](https://python-all.ru/3.9/library/os.html#os.getgroups) для случаев, когда может возвращаться не тот же список групп, который был установлен вызовом setgroups().319320#### `os.setpgrp()`321322Вызывает системный вызов `setpgrp()` или `setpgrp(0, 0)` в зависимости от того, какая версия реализована (если таковая имеется). За семантикой обращайтесь к руководству Unix.323324[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.325326#### `os.setpgid(pid, pgrp)`327328Вызывает системный вызов `setpgid()`, чтобы установить идентификатор группы процессов процесса с идентификатором *pid* равным группе процессов с идентификатором *pgrp*. За семантикой обращайтесь к руководству Unix.329330[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.331332#### `os.setpriority(which, who, priority)`333334Устанавливает приоритет планирования программы. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.9/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.9/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.9/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для [`PRIO_PROCESS`](https://python-all.ru/3.9/library/os.html#os.PRIO_PROCESS), идентификатор группы процессов для [`PRIO_PGRP`](https://python-all.ru/3.9/library/os.html#os.PRIO_PGRP) и идентификатор пользователя для [`PRIO_USER`](https://python-all.ru/3.9/library/os.html#os.PRIO_USER)). Нулевое значение для *who* обозначает (соответственно): вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. *priority* – значение в диапазоне от -20 до 19. Приоритет по умолчанию – 0; меньшие значения приоритета приводят к более благоприятному планированию.335336[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.337338Новое в версии 3.3.339340#### `os.setregid(rgid, egid)`341342Устанавливает реальный и эффективный идентификаторы группы текущего процесса.343344[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.345346#### `os.setresgid(rgid, egid, sgid)`347348Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.349350[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.351352Новое в версии 3.2.353354#### `os.setresuid(ruid, euid, suid)`355356Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.357358[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.359360Новое в версии 3.2.361362#### `os.setreuid(ruid, euid)`363364Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.365366[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.367368#### `os.getsid(pid)`369370Вызывает системный вызов `getsid()`. За семантикой обращайтесь к руководству Unix.371372[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.373374#### `os.setsid()`375376Вызывает системный вызов `setsid()`. За семантикой обращайтесь к руководству Unix.377378[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.379380#### `os.setuid(uid)`381382Устанавливает идентификатор пользователя текущего процесса.383384[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.385386#### `os.strerror(code)`387388Возвращает сообщение об ошибке, соответствующее коду ошибки в *code*. На платформах, где `strerror()` возвращает `NULL` при неизвестном номере ошибки, возбуждается [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError).389390#### `os.supports_bytes_environ`391392`True` если нативный тип ОС окружения – bytes (например, `False` на Windows).393394Новое в версии 3.2.395396#### `os.umask(mask)`397398Устанавливает текущую числовую umask и возвращает предыдущую umask.399400#### `os.uname()`401402Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение – объект с пятью атрибутами:403404- `sysname` – имя операционной системы405- `nodename` – имя машины в сети (определяется реализацией)406- `release` – выпуск операционной системы407- `version` – версия операционной системы408- `machine` – идентификатор оборудования409410Для обратной совместимости этот объект также является итерируемым и ведёт себя как кортеж из пяти элементов, содержащий `sysname`, `nodename`, `release`, `version` и `machine` в указанном порядке.411412Некоторые системы усекают `nodename` до 8 символов или до первой компоненты; лучший способ получить имя хоста – это [`socket.gethostname()`](https://python-all.ru/3.9/library/socket.html#socket.gethostname) или даже `socket.gethostbyaddr(socket.gethostname())`.413414[Доступность](https://python-all.ru/3.9/library/intro.html#availability): современные разновидности Unix.415416Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.417418#### `os.unsetenv(key)`419420Удаляет (сбрасывает) переменную окружения с именем *key*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.9/library/os.html#os.system), [`popen()`](https://python-all.ru/3.9/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.9/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.9/library/os.html#os.execv).421422Удаление элементов из [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ) автоматически преобразуется в соответствующий вызов [`unsetenv()`](https://python-all.ru/3.9/library/os.html#os.unsetenv); однако вызовы [`unsetenv()`](https://python-all.ru/3.9/library/os.html#os.unsetenv) не обновляют [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ), поэтому на самом деле предпочтительнее удалять элементы из [`os.environ`](https://python-all.ru/3.9/library/os.html#os.environ).423424Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.unsetenv` с аргументом `key`.425426Изменено в версии 3.9: Функция теперь всегда доступна, а также доступна на Windows.427428## Создание файловых объектов429430Эти функции создают новые [файловые объекты](https://python-all.ru/3.9/glossary.html#term-file-object). (См. также [`open()`](https://python-all.ru/3.9/library/os.html#os.open) для открытия файловых дескрипторов.)431432#### `os.fdopen(fd, *args, **kwargs)`433434Возвращает открытый файловый объект, подключённый к файловому дескриптору *fd*. Это псевдоним встроенной функции [`open()`](https://python-all.ru/3.9/library/functions.html#open) и принимает те же аргументы. Единственное отличие в том, что первый аргумент [`fdopen()`](https://python-all.ru/3.9/library/os.html#os.fdopen) всегда должен быть целым числом.435436## Операции с файловыми дескрипторами437438Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.439440Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.441442Метод [`fileno()`](https://python-all.ru/3.9/library/io.html#io.IOBase.fileno) можно использовать для получения файлового дескриптора, связанного с [файловым объектом](https://python-all.ru/3.9/glossary.html#term-file-object) при необходимости. Обратите внимание, что прямое использование файлового дескриптора обходит методы файлового объекта, игнорируя такие аспекты, как внутренняя буферизация данных.443444#### `os.close(fd)`445446Закрывает файловый дескриптор *fd*.447448> **Примечание**449>450> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/3.9/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.9/library/os.html#os.pipe). Чтобы закрыть «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.9/library/functions.html#open) или [`popen()`](https://python-all.ru/3.9/library/os.html#os.popen) или [`fdopen()`](https://python-all.ru/3.9/library/os.html#os.fdopen), используйте его метод [`close()`](https://python-all.ru/3.9/library/io.html#io.IOBase.close).451452#### `os.closerange(fd_low, fd_high)`453454Закрывает все файловые дескрипторы от *fd\_low* (включительно) до *fd\_high* (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):455456```python457for fd in range(fd_low, fd_high):458    try:459        os.close(fd)460    except OSError:461        pass462```463464#### `os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)`465466Копирует *count* байт из файлового дескриптора *src*, начиная со смещения *offset\_src*, в файловый дескриптор *dst*, начиная со смещения *offset\_dst*. Если *offset\_src* равно None, то *src* читается с текущей позиции; аналогично для *offset\_dst*. Файлы, на которые указывают *src* и *dst*, должны находиться в одной файловой системе, иначе [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) будет вызвано с [`errno`](https://python-all.ru/3.9/library/exceptions.html#OSError.errno), установленным в [`errno.EXDEV`](https://python-all.ru/3.9/library/errno.html#errno.EXDEV).467468Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в бинарном режиме.469470Возвращаемое значение – количество скопированных байт. Оно может быть меньше запрошенного объёма.471472[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux kernel \>= 4.5 or glibc \>= 2.27.473474Новое в версии 3.8.475476#### `os.device_encoding(fd)`477478Возвращает строку, описывающую кодировку устройства, связанного с *fd*, если оно подключено к терминалу; иначе возвращает [`None`](https://python-all.ru/3.9/library/constants.html#None).479480#### `os.dup(fd)`481482Возвращает дубликат файлового дескриптора *fd*. Новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.9/library/os.html#fd-inheritance).483484В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый файловый дескриптор является [наследуемым](https://python-all.ru/3.9/library/os.html#fd-inheritance).485486Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.487488#### `os.dup2(fd, fd2, inheritable=True)`489490Дублирует файловый дескриптор *fd* в *fd2*, предварительно закрывая последний, если необходимо. Возвращает *fd2*. Новый файловый дескриптор по умолчанию является [наследуемым](https://python-all.ru/3.9/library/os.html#fd-inheritance) или ненаследуемым, если *inheritable* равно `False`.491492Изменено в версии 3.4: Добавлен необязательный параметр *inheritable*.493494Изменено в версии 3.7: Возвращает *fd2* при успехе. Ранее всегда возвращалось `None`.495496#### `os.fchmod(fd, mode)`497498Изменяет режим файла, заданного *fd*, на числовой *mode*. См. документацию [`chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(fd, mode)`.499500Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.501502[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.503504#### `os.fchown(fd, uid, gid)`505506Изменяет идентификаторы владельца и группы файла, заданного *fd*, на числовые *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См. [`chown()`](https://python-all.ru/3.9/library/os.html#os.chown). Начиная с Python 3.3, это эквивалентно `os.chown(fd, uid, gid)`.507508Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.509510[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.511512#### `os.fdatasync(fd)`513514Принудительная запись файла с файловым дескриптором *fd* на диск. Не принуждает к обновлению метаданных.515516[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.517518> **Примечание**519>520> Эта функция недоступна в MacOS.521522#### `os.fpathconf(fd, name)`523524Возвращает информацию о системной конфигурации, относящуюся к открытому файлу. *name* задаёт значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и другие). Некоторые платформы определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для *name*.525526Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.9/library/errno.html#errno.EINVAL) в качестве кода ошибки.527528Начиная с Python 3.3, это эквивалентно `os.pathconf(fd, name)`.529530[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.531532#### `os.fstat(fd)`533534Получить статус файлового дескриптора *fd*. Возвращает объект [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result).535536Начиная с Python 3.3, это эквивалентно `os.stat(fd)`.537538> **См. также**539>540> Функция [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat).541542#### `os.fstatvfs(fd)`543544Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором *fd*, как [`statvfs()`](https://python-all.ru/3.9/library/os.html#os.statvfs). Начиная с Python 3.3, это eквивалентно `os.statvfs(fd)`.545546[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.547548#### `os.fsync(fd)`549550Принудительно записывает файл с файловым дескриптором *fd* на диск. В Unix вызывает нативную функцию `fsync()`; в Windows – функцию MS `_commit()`.551552Если работа ведётся с буферизованным файловым объектом Python [file object](https://python-all.ru/3.9/glossary.html#term-file-object) *f*, сначала следует выполнить `f.flush()`, а затем `os.fsync(f.fileno())`, чтобы гарантировать запись на диск всех внутренних буферов, связанных с *f*.553554[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.555556#### `os.ftruncate(fd, length)`557558Обрезает файл, соответствующий файловому дескриптору *fd*, так, чтобы его размер не превышал *length* байт. Начиная с Python 3.3, это эквивалентно `os.truncate(fd, length)`.559560Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.truncate` с аргументами `fd`, `length`.561562[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.563564Изменено в версии 3.5: Добавлена поддержка Windows565566#### `os.get_blocking(fd)`567568Возвращает блокирующий режим файлового дескриптора: `False`, если установлен флаг [`O_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.O_NONBLOCK), и `True`, если флаг сброшен.569570См. также [`set_blocking()`](https://python-all.ru/3.9/library/os.html#os.set_blocking) и [`socket.socket.setblocking()`](https://python-all.ru/3.9/library/socket.html#socket.socket.setblocking).571572[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.573574Новое в версии 3.5.575576#### `os.isatty(fd)`577578Возвращает `True`, если файловый дескриптор *fd* открыт и подключён к устройству типа tty, иначе `False`.579580#### `os.lockf(fd, cmd, len)`581582Применяет, проверяет или удаляет POSIX-блокировку на открытом файловом дескрипторе. *fd* – открытый файловый дескриптор. *cmd* задаёт команду: одну из [`F_LOCK`](https://python-all.ru/3.9/library/os.html#os.F_LOCK), [`F_TLOCK`](https://python-all.ru/3.9/library/os.html#os.F_TLOCK), [`F_ULOCK`](https://python-all.ru/3.9/library/os.html#os.F_ULOCK) или [`F_TEST`](https://python-all.ru/3.9/library/os.html#os.F_TEST). *len* задаёт участок файла для блокировки.583584Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.lockf` с аргументами `fd`, `cmd`, `len`.585586[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.587588Новое в версии 3.3.589590#### `os.F_LOCK`591592#### `os.F_TLOCK`593594#### `os.F_ULOCK`595596#### `os.F_TEST`597598Флаги, указывающие, какое действие выполнит [`lockf()`](https://python-all.ru/3.9/library/os.html#os.lockf).599600[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.601602Новое в версии 3.3.603604#### `os.lseek(fd, pos, how)`605606Устанавливает текущую позицию файлового дескриптора *fd* в позицию *pos*, с заданным параметром *how*: [`SEEK_SET`](https://python-all.ru/3.9/library/os.html#os.SEEK_SET) или `0` – установить позицию относительно начала файла; [`SEEK_CUR`](https://python-all.ru/3.9/library/os.html#os.SEEK_CUR) или `1` – относительно текущей позиции; [`SEEK_END`](https://python-all.ru/3.9/library/os.html#os.SEEK_END) или `2` – относительно конца файла. Возвращает новую позицию курсора в байтах от начала.607608#### `os.SEEK_SET`609610#### `os.SEEK_CUR`611612#### `os.SEEK_END`613614Параметры функции [`lseek()`](https://python-all.ru/3.9/library/os.html#os.lseek). Их значения – 0, 1 и 2 соответственно.615616Новое в версии 3.3: Некоторые операционные системы могут поддерживать дополнительные значения, такие как `os.SEEK_HOLE` или `os.SEEK_DATA`.617618#### `os.open(path, flags, mode=0o777, *, dir_fd=None)`619620Открывает файл *path* и устанавливает различные флаги в соответствии с *flags* и, возможно, его режим в соответствии с *mode*. При вычислении *mode* текущее значение umask сначала маскируется. Возвращает файловый дескриптор для вновь открытого файла. Новый файловый дескриптор [не наследуется](https://python-all.ru/3.9/library/os.html#fd-inheritance).621622Описание значений флагов и режимов см. в документации библиотеки времени выполнения C; константы флагов (например, [`O_RDONLY`](https://python-all.ru/3.9/library/os.html#os.O_RDONLY) и [`O_WRONLY`](https://python-all.ru/3.9/library/os.html#os.O_WRONLY)) определены в модуле [`os`](https://python-all.ru/3.9/library/os.html#module-os). В частности, в Windows необходимо добавить [`O_BINARY`](https://python-all.ru/3.9/library/os.html#os.O_BINARY) для открытия файлов в двоичном режиме.623624Эта функция поддерживает [пути относительно файловых дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd) с помощью параметра *dir\_fd*.625626Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `open` с аргументами `path`, `mode`, `flags`.627628Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.629630> **Примечание**631>632> Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию [`open()`](https://python-all.ru/3.9/library/functions.html#open), которая возвращает [файловый объект](https://python-all.ru/3.9/glossary.html#term-file-object) с методами `read()` и `write()` (и многими другими). Чтобы обернуть файловый дескриптор в файловый объект, используйте [`fdopen()`](https://python-all.ru/3.9/library/os.html#os.fdopen).633634Новое в версии 3.3: Аргумент *dir\_fd*.635636Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.9/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.9/library/os.html) для обоснования).637638Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).639640Следующие константы являются значениями параметра *flags* функции [`open()`](https://python-all.ru/3.9/library/os.html#os.open). Их можно комбинировать с помощью оператора побитового ИЛИ `|`. Некоторые из них доступны не на всех платформах. Описание их доступности и использования см. в *[справочной странице open(2)](https://python-all.ru/3.9/library/os.html)* в Unix или [в MSDN](https://python-all.ru/3.9/library/os.html) в Windows.641642#### `os.O_RDONLY`643644#### `os.O_WRONLY`645646#### `os.O_RDWR`647648#### `os.O_APPEND`649650#### `os.O_CREAT`651652#### `os.O_EXCL`653654#### `os.O_TRUNC`655656Приведённые выше константы доступны в Unix и Windows.657658#### `os.O_DSYNC`659660#### `os.O_RSYNC`661662#### `os.O_SYNC`663664#### `os.O_NDELAY`665666#### `os.O_NONBLOCK`667668#### `os.O_NOCTTY`669670#### `os.O_CLOEXEC`671672Приведённые выше константы доступны только в Unix.673674Изменено в версии 3.3: добавлена константа [`O_CLOEXEC`](https://python-all.ru/3.9/library/os.html#os.O_CLOEXEC).675676#### `os.O_BINARY`677678#### `os.O_NOINHERIT`679680#### `os.O_SHORT_LIVED`681682#### `os.O_TEMPORARY`683684#### `os.O_RANDOM`685686#### `os.O_SEQUENTIAL`687688#### `os.O_TEXT`689690Приведённые выше константы доступны только в Windows.691692#### `os.O_ASYNC`693694#### `os.O_DIRECT`695696#### `os.O_DIRECTORY`697698#### `os.O_NOFOLLOW`699700#### `os.O_NOATIME`701702#### `os.O_PATH`703704#### `os.O_TMPFILE`705706#### `os.O_SHLOCK`707708#### `os.O_EXLOCK`709710Вышеуказанные константы являются расширениями и отсутствуют, если не определены библиотекой C.711712Изменено в версии 3.4: Добавлена [`O_PATH`](https://python-all.ru/3.9/library/os.html#os.O_PATH) в системах, которые её поддерживают. Добавлена [`O_TMPFILE`](https://python-all.ru/3.9/library/os.html#os.O_TMPFILE), доступна только на Linux Kernel 3.11 или новее.713714#### `os.openpty()`715716Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов `(master, slave)` для pty и tty соответственно. Новые файловые дескрипторы являются [ненаследуемыми](https://python-all.ru/3.9/library/os.html#fd-inheritance). Для (чуть более) переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.9/library/pty.html#module-pty).717718[Доступность](https://python-all.ru/3.9/library/intro.html#availability): некоторые разновидности Unix.719720Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.721722#### `os.pipe()`723724Создаёт канал. Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно. Новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.9/library/os.html#fd-inheritance).725726[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.727728Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.729730#### `os.pipe2(flags)`731732Создаёт канал с атомарной установкой *flags*. *flags* можно составить с помощью логического ИЛИ одной или нескольких из этих констант: [`O_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.O_NONBLOCK), [`O_CLOEXEC`](https://python-all.ru/3.9/library/os.html#os.O_CLOEXEC). Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно.733734[Доступность](https://python-all.ru/3.9/library/intro.html#availability): некоторые разновидности Unix.735736Новое в версии 3.3.737738#### `os.posix_fallocate(fd, offset, len)`739740Гарантирует, что для файла, указанного в *fd*, выделено достаточно дискового пространства, начиная с *offset* и продолжаясь на *len* байтов.741742[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.743744Новое в версии 3.3.745746#### `os.posix_fadvise(fd, offset, len, advice)`747748Объявляет о намерении получить доступ к данным по определённому шаблону, что позволяет ядру выполнять оптимизации. Совет применяется к области файла, указанной в *fd*, начиная с *offset* и продолжаясь на *len* байтов. *advice* может быть одним из [`POSIX_FADV_NORMAL`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_NORMAL), [`POSIX_FADV_SEQUENTIAL`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_SEQUENTIAL), [`POSIX_FADV_RANDOM`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_RANDOM), [`POSIX_FADV_NOREUSE`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_NOREUSE), [`POSIX_FADV_WILLNEED`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_WILLNEED) или [`POSIX_FADV_DONTNEED`](https://python-all.ru/3.9/library/os.html#os.POSIX_FADV_DONTNEED).749750[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.751752Новое в версии 3.3.753754#### `os.POSIX_FADV_NORMAL`755756#### `os.POSIX_FADV_SEQUENTIAL`757758#### `os.POSIX_FADV_RANDOM`759760#### `os.POSIX_FADV_NOREUSE`761762#### `os.POSIX_FADV_WILLNEED`763764#### `os.POSIX_FADV_DONTNEED`765766Флаги, которые можно использовать в *advice* в [`posix_fadvise()`](https://python-all.ru/3.9/library/os.html#os.posix_fadvise), указывающие шаблон доступа, который, вероятно, будет использоваться.767768[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.769770Новое в версии 3.3.771772#### `os.pread(fd, n, offset)`773774Читает не более *n* байтов из файлового дескриптора *fd* в позиции *offset*, не изменяя файловое смещение.775776Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного *fd*, возвращается пустой байтовый объект.777778[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.779780Новое в версии 3.3.781782#### `os.preadv(fd, buffers, offset, flags=0)`783784Читает из файлового дескриптора *fd* в позиции *offset* в изменяемые [байтоподобные объекты](https://python-all.ru/3.9/glossary.html#term-bytes-like-object) *buffers*, оставляя файловое смещение неизменным. Данные передаются в каждый буфер до его заполнения, после чего осуществляется переход к следующему буферу в последовательности для сохранения оставшихся данных.785786Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:787788- [`RWF_HIPRI`](https://python-all.ru/3.9/library/os.html#os.RWF_HIPRI)789- [`RWF_NOWAIT`](https://python-all.ru/3.9/library/os.html#os.RWF_NOWAIT)790791Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.792793Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.9/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.794795Объединяет функциональность [`os.readv()`](https://python-all.ru/3.9/library/os.html#os.readv) и [`os.pread()`](https://python-all.ru/3.9/library/os.html#os.pread).796797[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 2.6.30 и новее, FreeBSD 6.0 и новее, OpenBSD 2.7 и новее, AIX 7.1 и новее. Для использования флагов требуется Linux 4.6 или новее.798799Добавлено в версии 3.7.800801#### `os.RWF_NOWAIT`802803Не ждать данные, которые не доступны немедленно. Если указан этот флаг, системный вызов вернётся немедленно, если пришлось бы читать данные из резервного хранилища или ждать блокировку.804805Если какие-то данные были успешно прочитаны, возвращается количество прочитанных байт. Если не было прочитано ни одного байта, возвращается `-1` и устанавливается errno в [`errno.EAGAIN`](https://python-all.ru/3.9/library/errno.html#errno.EAGAIN).806807[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 4.14 и новее.808809Добавлено в версии 3.7.810811#### `os.RWF_HIPRI`812813Чтение/запись с высоким приоритетом. Позволяет блочным файловым системам использовать опрос устройства, что обеспечивает меньшую задержку, но может потреблять дополнительные ресурсы.814815В настоящее время в Linux эта возможность доступна только для файлового дескриптора, открытого с использованием флага [`O_DIRECT`](https://python-all.ru/3.9/library/os.html#os.O_DIRECT).816817[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 4.6 и новее.818819Добавлено в версии 3.7.820821#### `os.pwrite(fd, str, offset)`822823Записывает байтовую строку из *str* в файловый дескриптор *fd* в позиции *offset*, оставляя файловое смещение неизменным.824825Возвращает количество байтов, фактически записанных.826827[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.828829Новое в версии 3.3.830831#### `os.pwritev(fd, buffers, offset, flags=0)`832833Записывает содержимое *buffers* в файловый дескриптор *fd* по смещению *offset*, не изменяя текущее смещение файла. *buffers* должен быть последовательностью [байтоподобных объектов](https://python-all.ru/3.9/glossary.html#term-bytes-like-object). Буферы обрабатываются в порядке массива. Сначала записывается всё содержимое первого буфера, затем второго и так далее.834835Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:836837- [`RWF_DSYNC`](https://python-all.ru/3.9/library/os.html#os.RWF_DSYNC)838- [`RWF_SYNC`](https://python-all.ru/3.9/library/os.html#os.RWF_SYNC)839840Возвращает общее количество реально записанных байт.841842Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.9/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.843844Объединяет функциональность [`os.writev()`](https://python-all.ru/3.9/library/os.html#os.writev) и [`os.pwrite()`](https://python-all.ru/3.9/library/os.html#os.pwrite).845846[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 2.6.30 и новее, FreeBSD 6.0 и новее, OpenBSD 2.7 и новее, AIX 7.1 и новее. Использование флагов требует Linux 4.7 или новее.847848Добавлено в версии 3.7.849850#### `os.RWF_DSYNC`851852Предоставляет пооперационный эквивалент флага [`O_DSYNC`](https://python-all.ru/3.9/library/os.html#os.O_DSYNC) `open(2)`. Это действие флага распространяется только на диапазон данных, записанных системным вызовом.853854[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 4.7 и новее.855856Добавлено в версии 3.7.857858#### `os.RWF_SYNC`859860Предоставляет пооперационный эквивалент флага [`O_SYNC`](https://python-all.ru/3.9/library/os.html#os.O_SYNC) `open(2)`. Это действие флага распространяется только на диапазон данных, записанных системным вызовом.861862[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 4.7 и новее.863864Добавлено в версии 3.7.865866#### `os.read(fd, n)`867868Читает не более *n* байт из файлового дескриптора *fd*.869870Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного *fd*, возвращается пустой байтовый объект.871872> **Примечание**873>874> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/3.9/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.9/library/os.html#os.pipe). Чтобы прочитать «файловый объект», возвращаемый встроенной функцией [`open()`](https://python-all.ru/3.9/library/functions.html#open) или [`popen()`](https://python-all.ru/3.9/library/os.html#os.popen) или [`fdopen()`](https://python-all.ru/3.9/library/os.html#os.fdopen), или [`sys.stdin`](https://python-all.ru/3.9/library/sys.html#sys.stdin), используйте его методы `read()` или `readline()`.875876Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.9/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.9/library/os.html) для обоснования).877878#### `os.sendfile(out_fd, in_fd, offset, count)`879880#### `os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)`881882Копирует *count* байт из файлового дескриптора *in\_fd* в файловый дескриптор *out\_fd* начиная с *смещения*. Возвращает количество отправленных байт. Когда достигнут конец файла, возвращается `0`.883884Первая форма записи функции поддерживается на всех платформах, которые определяют [`sendfile()`](https://python-all.ru/3.9/library/os.html#os.sendfile).885886В Linux, если *смещение* задано как `None`, байты считываются из текущей позиции *in\_fd*, и позиция *in\_fd* обновляется.887888Второй случай может использоваться в macOS и FreeBSD, где *headers* и *trailers* – произвольные последовательности буферов, которые записываются до и после данных из *in\_fd*. Возвращает то же, что и первый случай.889890В macOS и FreeBSD значение `0` для *count* означает отправку до тех пор, пока не будет достигнут конец *in\_fd*.891892Все платформы поддерживают сокеты в качестве файлового дескриптора *out\_fd*, а некоторые платформы также допускают другие типы (например, обычный файл, канал).893894Кроссплатформенным приложениям не следует использовать аргументы *headers*, *trailers* и *flags*.895896[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.897898> **Примечание**899>900> Для высокоуровневой обёртки над [`sendfile()`](https://python-all.ru/3.9/library/os.html#os.sendfile) см. [`socket.socket.sendfile()`](https://python-all.ru/3.9/library/socket.html#socket.socket.sendfile).901902Новое в версии 3.3.903904Изменено в версии 3.9: Параметры *out* и *in* переименованы в *out\_fd* и *in\_fd*.905906#### `os.set_blocking(fd, blocking)`907908Устанавливает режим блокировки для указанного файлового дескриптора. Устанавливает флаг [`O_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.O_NONBLOCK), если блокировка `False`, и сбрасывает флаг в противном случае.909910См. также [`get_blocking()`](https://python-all.ru/3.9/library/os.html#os.get_blocking) и [`socket.socket.setblocking()`](https://python-all.ru/3.9/library/socket.html#socket.socket.setblocking).911912[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.913914Новое в версии 3.5.915916#### `os.SF_NODISKIO`917918#### `os.SF_MNOWAIT`919920#### `os.SF_SYNC`921922Параметры функции [`sendfile()`](https://python-all.ru/3.9/library/os.html#os.sendfile), если реализация их поддерживает.923924[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.925926Новое в версии 3.3.927928#### `os.readv(fd, buffers)`929930Читает из файлового дескриптора *fd* в несколько изменяемых [объектов, подобных байтам](https://python-all.ru/3.9/glossary.html#term-bytes-like-object) *buffers*. Передаёт данные в каждый буфер до его заполнения, затем переходит к следующему буферу в последовательности для размещения оставшихся данных.931932Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.933934Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.9/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.935936[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.937938Новое в версии 3.3.939940#### `os.tcgetpgrp(fd)`941942Возвращает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/3.9/library/os.html#os.open)).943944[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.945946#### `os.tcsetpgrp(fd, pg)`947948Устанавливает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/3.9/library/os.html#os.open)), в *pg*.949950[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.951952#### `os.ttyname(fd)`953954Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором *fd*. Если *fd* не связан с терминальным устройством, возбуждается исключение.955956[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.957958#### `os.write(fd, str)`959960Записывает байтовую строку из *str* в файловый дескриптор *fd*.961962Возвращает количество байтов, фактически записанных.963964> **Примечание**965>966> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/3.9/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.9/library/os.html#os.pipe). Чтобы записать «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.9/library/functions.html#open) или [`popen()`](https://python-all.ru/3.9/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/3.9/library/os.html#os.fdopen), или [`sys.stdout`](https://python-all.ru/3.9/library/sys.html#sys.stdout), или [`sys.stderr`](https://python-all.ru/3.9/library/sys.html#sys.stderr), используйте его метод `write()`.967968Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.9/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.9/library/os.html) для обоснования).969970#### `os.writev(fd, buffers)`971972Записывает содержимое *buffers* в файловый дескриптор *fd*. *buffers* должен быть последовательностью [байтоподобных объектов](https://python-all.ru/3.9/glossary.html#term-bytes-like-object). Буферы обрабатываются в порядке массива. Сначала полностью записывается содержимое первого буфера, затем второго и так далее.973974Возвращает общее количество байтов, фактически записанных.975976Операционная система может устанавливать ограничение (значение [`sysconf()`](https://python-all.ru/3.9/library/os.html#os.sysconf) `'SC_IOV_MAX'`) на количество буферов, которые можно использовать.977978[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.979980Новое в версии 3.3.981982### Определение размера терминала983984Новое в версии 3.3.985986#### `os.get_terminal_size(fd=STDOUT_FILENO)`987988Возвращает размер окна терминала в виде `(columns, lines)`, кортежа типа [`terminal_size`](https://python-all.ru/3.9/library/os.html#os.terminal_size).989990Необязательный аргумент `fd` (по умолчанию `STDOUT_FILENO`, или стандартный вывод) указывает, какой файловый дескриптор следует опросить.991992Если файловый дескриптор не подключён к терминалу, возбуждается [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError).993994[`shutil.get_terminal_size()`](https://python-all.ru/3.9/library/shutil.html#shutil.get_terminal_size) – это высокоуровневая функция, которую следует использовать обычно; `os.get_terminal_size` – это низкоуровневая реализация.995996[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.997998#### `class os.terminal_size`9991000Подкласс кортежа, содержащий `(columns, lines)` окна терминала.10011002#### `columns`10031004Ширина окна терминала в символах.10051006#### `lines`10071008Высота окна терминала в символах.10091010### Наследование файловых дескрипторов10111012Новое в версии 3.4.10131014Файловый дескриптор имеет флаг «наследуемости», который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python 3.4, файловые дескрипторы, создаваемые Python, по умолчанию ненаследуемые.10151016В UNIX ненаследуемые файловые дескрипторы закрываются в дочерних процессах при запуске новой программы; остальные дескрипторы наследуются.10171018В Windows ненаследуемые дескрипторы и файловые дескрипторы закрываются в дочерних процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout и stderr), которые всегда наследуются. При использовании функций [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl) наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы. При использовании модуля [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess) все файловые дескрипторы, кроме стандартных потоков, закрываются, а наследуемые дескрипторы наследуются только в том случае, если параметр *close\_fds* имеет значение `False`.10191020#### `os.get_inheritable(fd)`10211022Получает флаг «наследуемости» указанного файлового дескриптора (логическое значение).10231024#### `os.set_inheritable(fd, inheritable)`10251026Устанавливает флаг наследуемости для указанного файлового дескриптора.10271028#### `os.get_handle_inheritable(handle)`10291030Возвращает флаг наследуемости для указанного дескриптора (булево значение).10311032[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Windows.10331034#### `os.set_handle_inheritable(handle, inheritable)`10351036Устанавливает флаг наследуемости для указанного дескриптора.10371038[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Windows.10391040## Файлы и каталоги10411042На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:10431044- **Указание файлового дескриптора:** Обычно аргумент *path*, передаваемый функциям из модуля [`os`](https://python-all.ru/3.9/library/os.html#module-os), должен быть строкой, задающей путь к файлу. Однако некоторые функции теперь в качестве альтернативы принимают открытый файловый дескриптор для своего аргумента *path*. В этом случае функция будет работать с файлом, на который указывает дескриптор. (В системах POSIX Python вызовет вариант функции с префиксом `f` (например, вызовет `fchdir` вместо `chdir`).)10451046  Проверить, может ли *path* быть указан как файловый дескриптор для конкретной функции на вашей платформе, можно с помощью [`os.supports_fd`](https://python-all.ru/3.9/library/os.html#os.supports_fd). Если эта функциональность недоступна, её использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).10471048  Если функция также поддерживает аргументы *dir\_fd* или *follow\_symlinks*, то указывать любой из них при передаче *path* в качестве файлового дескриптора будет ошибкой.10491050- **Пути относительно дескрипторов каталогов:** Если *dir\_fd* не равен `None`, то он должен быть файловым дескриптором, ссылающимся на каталог, а путь, над которым выполняется операция, должен быть относительным; в этом случае путь будет считаться относительно этого каталога. Если путь является абсолютным, *dir\_fd* игнорируется. (В системах POSIX Python вызовет вариант функции с суффиксом `at` и, возможно, с префиксом `f` (например, вызовет `faccessat` вместо `access`).10511052  Проверить, поддерживается ли *dir\_fd* для конкретной функции на вашей платформе, можно с помощью [`os.supports_dir_fd`](https://python-all.ru/3.9/library/os.html#os.supports_dir_fd). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).10531054- **Неследование символическим ссылкам:** Если *follow\_symlinks* равен `False`, и последний элемент пути, над которым выполняется операция, является символической ссылкой, то функция будет работать с самой символической ссылкой, а не с файлом, на который она указывает. (В системах POSIX Python вызовет вариант функции `l...`).10551056  Проверить, поддерживается ли *follow\_symlinks* для конкретной функции на вашей платформе, можно с помощью [`os.supports_follow_symlinks`](https://python-all.ru/3.9/library/os.html#os.supports_follow_symlinks). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).10571058#### `os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)`10591060Использует реальный UID/GID для проверки доступа к *path*. Обратите внимание, что большинство операций используют эффективные UID/GID, поэтому эта функция может использоваться в окружении suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к *path*. Параметр *mode* должен быть равен [`F_OK`](https://python-all.ru/3.9/library/os.html#os.F_OK) для проверки существования *path*, или может быть логическим ИЛИ одного или нескольких значений [`R_OK`](https://python-all.ru/3.9/library/os.html#os.R_OK), [`W_OK`](https://python-all.ru/3.9/library/os.html#os.W_OK) и [`X_OK`](https://python-all.ru/3.9/library/os.html#os.X_OK) для проверки прав доступа. Возвращает [`True`](https://python-all.ru/3.9/library/constants.html#True), если доступ разрешён, [`False`](https://python-all.ru/3.9/library/constants.html#False) – если нет. Подробнее см. на странице man Unix *[access(2)](https://python-all.ru/3.9/library/os.html)*.10611062Эта функция поддерживает [указание путей относительно дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd) и [отказ от следования по символьным ссылкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).10631064Если *effective\_ids* равно `True`, [`access()`](https://python-all.ru/3.9/library/os.html#os.access) будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных UID/GID. Параметр *effective\_ids* может не поддерживаться на вашей платформе; проверить, доступен ли он, можно с помощью [`os.supports_effective_ids`](https://python-all.ru/3.9/library/os.html#os.supports_effective_ids). Если он недоступен, его использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).10651066> **Примечание**1067>1068> Использование [`access()`](https://python-all.ru/3.9/library/os.html#os.access) для проверки, авторизован ли пользователь, например, на открытие файла, перед фактическим открытием с помощью [`open()`](https://python-all.ru/3.9/library/functions.html#open), создаёт брешь в безопасности, поскольку пользователь может воспользоваться коротким временным промежутком между проверкой и открытием файла для его изменения. Предпочтительнее использовать подход [EAFP](https://python-all.ru/3.9/glossary.html#term-eafp). Например:1069>1070> ```python1071> if os.access("myfile", os.R_OK):1072>     with open("myfile") as fp:1073>         return fp.read()1074> return "some default data"1075> ```1076>1077> лучше написать так:1078>1079> ```python1080> try:1081>     fp = open("myfile")1082> except PermissionError:1083>     return "some default data"1084> else:1085>     with fp:1086>         return fp.read()1087> ```10881089> **Примечание**1090>1091> Операции ввода-вывода могут завершиться ошибкой, даже если [`access()`](https://python-all.ru/3.9/library/os.html#os.access) указывает, что они должны выполниться успешно, особенно для операций в сетевых файловых системах, которые могут иметь семантику прав доступа, выходящую за рамки обычной POSIX-модели битов разрешений.10921093Изменено в версии 3.3: Добавлены параметры *dir\_fd*, *effective\_ids* и *follow\_symlinks*.10941095Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).10961097#### `os.F_OK`10981099#### `os.R_OK`11001101#### `os.W_OK`11021103#### `os.X_OK`11041105Значения, которые передаются в параметре *mode* функции [`access()`](https://python-all.ru/3.9/library/os.html#os.access) для проверки существования, читаемости, возможности записи и исполнения *path*, соответственно.11061107#### `os.chdir(path)`11081109Изменяет текущий рабочий каталог на *path*.11101111Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd). Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.11121113Эта функция может вызывать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) и подклассы, такие как [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError), [`PermissionError`](https://python-all.ru/3.9/library/exceptions.html#PermissionError), и [`NotADirectoryError`](https://python-all.ru/3.9/library/exceptions.html#NotADirectoryError).11141115Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chdir` с аргументом `path`.11161117Новое в версии 3.3: Добавлена поддержка указания *path* в качестве файлового дескриптора на некоторых платформах.11181119Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).11201121#### `os.chflags(path, flags, *, follow_symlinks=True)`11221123Устанавливает флаги *path* в числовое значение *flags*. *flags* может принимать комбинацию (побитовое ИЛИ) следующих значений (определённых в модуле [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat)):11241125- [`stat.UF_NODUMP`](https://python-all.ru/3.9/library/stat.html#stat.UF_NODUMP)1126- [`stat.UF_IMMUTABLE`](https://python-all.ru/3.9/library/stat.html#stat.UF_IMMUTABLE)1127- [`stat.UF_APPEND`](https://python-all.ru/3.9/library/stat.html#stat.UF_APPEND)1128- [`stat.UF_OPAQUE`](https://python-all.ru/3.9/library/stat.html#stat.UF_OPAQUE)1129- [`stat.UF_NOUNLINK`](https://python-all.ru/3.9/library/stat.html#stat.UF_NOUNLINK)1130- [`stat.UF_COMPRESSED`](https://python-all.ru/3.9/library/stat.html#stat.UF_COMPRESSED)1131- [`stat.UF_HIDDEN`](https://python-all.ru/3.9/library/stat.html#stat.UF_HIDDEN)1132- [`stat.SF_ARCHIVED`](https://python-all.ru/3.9/library/stat.html#stat.SF_ARCHIVED)1133- [`stat.SF_IMMUTABLE`](https://python-all.ru/3.9/library/stat.html#stat.SF_IMMUTABLE)1134- [`stat.SF_APPEND`](https://python-all.ru/3.9/library/stat.html#stat.SF_APPEND)1135- [`stat.SF_NOUNLINK`](https://python-all.ru/3.9/library/stat.html#stat.SF_NOUNLINK)1136- [`stat.SF_SNAPSHOT`](https://python-all.ru/3.9/library/stat.html#stat.SF_SNAPSHOT)11371138Эта функция поддерживает [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).11391140Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chflags` с аргументами `path`, `flags`.11411142[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.11431144Новое в версии 3.3: Аргумент *follow\_symlinks*.11451146Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).11471148#### `os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)`11491150Изменяет режим *path* на числовое значение *mode*. *mode* может принимать одно из следующих значений (определённых в модуле [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat)) или их побитовые комбинации:11511152- [`stat.S_ISUID`](https://python-all.ru/3.9/library/stat.html#stat.S_ISUID)1153- [`stat.S_ISGID`](https://python-all.ru/3.9/library/stat.html#stat.S_ISGID)1154- [`stat.S_ENFMT`](https://python-all.ru/3.9/library/stat.html#stat.S_ENFMT)1155- [`stat.S_ISVTX`](https://python-all.ru/3.9/library/stat.html#stat.S_ISVTX)1156- [`stat.S_IREAD`](https://python-all.ru/3.9/library/stat.html#stat.S_IREAD)1157- [`stat.S_IWRITE`](https://python-all.ru/3.9/library/stat.html#stat.S_IWRITE)1158- [`stat.S_IEXEC`](https://python-all.ru/3.9/library/stat.html#stat.S_IEXEC)1159- [`stat.S_IRWXU`](https://python-all.ru/3.9/library/stat.html#stat.S_IRWXU)1160- [`stat.S_IRUSR`](https://python-all.ru/3.9/library/stat.html#stat.S_IRUSR)1161- [`stat.S_IWUSR`](https://python-all.ru/3.9/library/stat.html#stat.S_IWUSR)1162- [`stat.S_IXUSR`](https://python-all.ru/3.9/library/stat.html#stat.S_IXUSR)1163- [`stat.S_IRWXG`](https://python-all.ru/3.9/library/stat.html#stat.S_IRWXG)1164- [`stat.S_IRGRP`](https://python-all.ru/3.9/library/stat.html#stat.S_IRGRP)1165- [`stat.S_IWGRP`](https://python-all.ru/3.9/library/stat.html#stat.S_IWGRP)1166- [`stat.S_IXGRP`](https://python-all.ru/3.9/library/stat.html#stat.S_IXGRP)1167- [`stat.S_IRWXO`](https://python-all.ru/3.9/library/stat.html#stat.S_IRWXO)1168- [`stat.S_IROTH`](https://python-all.ru/3.9/library/stat.html#stat.S_IROTH)1169- [`stat.S_IWOTH`](https://python-all.ru/3.9/library/stat.html#stat.S_IWOTH)1170- [`stat.S_IXOTH`](https://python-all.ru/3.9/library/stat.html#stat.S_IXOTH)11711172Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).11731174> **Примечание**1175>1176> Хотя Windows поддерживает [`chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod), с его помощью можно установить только флаг «только для чтения» файла (через константы `stat.S_IWRITE` и `stat.S_IREAD` или соответствующее целочисленное значение). Все остальные биты игнорируются.11771178Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.11791180Новое в версии 3.3: добавлена возможность указывать *path* как открытый файловый дескриптор, а также аргументы *dir\_fd* и *follow\_symlinks*.11811182Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).11831184#### `os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)`11851186Изменяет идентификаторы владельца и группы *path* на числовые значения *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1.11871188Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).11891190См. [`shutil.chown()`](https://python-all.ru/3.9/library/shutil.html#shutil.chown) – функцию более высокого уровня, которая принимает имена в дополнение к числовым идентификаторам.11911192Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.11931194[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.11951196Новое в версии 3.3: добавлена возможность указывать *path* как открытый файловый дескриптор, а также аргументы *dir\_fd* и *follow\_symlinks*.11971198Изменено в версии 3.6: Поддерживает [path-подобный объект](https://python-all.ru/3.9/glossary.html#term-path-like-object).11991200#### `os.chroot(path)`12011202Изменяет корневую директорию текущего процесса на *path*.12031204[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.12051206Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).12071208#### `os.fchdir(fd)`12091210Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором *fd*. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл. Начиная с Python 3.3, это эквивалентно `os.chdir(fd)`.12111212Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chdir` с аргументом `path`.12131214[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.12151216#### `os.getcwd()`12171218Возвращает строку, представляющую текущую рабочую директорию.12191220#### `os.getcwdb()`12211222Возвращает байтовую строку, представляющую текущую рабочую директорию.12231224Изменено в версии 3.8: Теперь функция использует кодировку UTF-8 в Windows вместо кодовой страницы ANSI; см. [**PEP 529**](https://python-all.ru/3.9/library/os.html) для обоснования. Функция больше не считается устаревшей в Windows.12251226#### `os.lchflags(path, flags)`12271228Устанавливает флаги *path* в числовое значение *flags*, как [`chflags()`](https://python-all.ru/3.9/library/os.html#os.chflags), но не следует символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chflags(path, flags, follow_symlinks=False)`.12291230Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chflags` с аргументами `path`, `flags`.12311232[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.12331234Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).12351236#### `os.lchmod(path, mode)`12371238Изменяет режим *path* на числовой *mode*. Если path является символической ссылкой, это влияет на саму ссылку, а не на цель. См. документацию [`chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(path, mode, follow_symlinks=False)`.12391240Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chmod` с аргументами `path`, `mode`, `dir_fd`.12411242[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.12431244Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).12451246#### `os.lchown(path, uid, gid)`12471248Изменяет идентификаторы владельца и группы для *path* на числовые *uid* и *gid*. Эта функция не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chown(path, uid, gid, follow_symlinks=False)`.12491250Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.chown` с аргументами `path`, `uid`, `gid`, `dir_fd`.12511252[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.12531254Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).12551256#### `os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)`12571258Создаёт жёсткую ссылку, указывающую на *src*, с именем *dst*.12591260Эта функция поддерживает указание *src\_dir\_fd* и/или *dst\_dir\_fd* для задания [путей относительно дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd), а также [отказ от следования символическим ссылкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).12611262Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.link` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.12631264[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.12651266Изменено в версии 3.2: Добавлена поддержка Windows.12671268Новое в версии 3.3: Добавлены аргументы *src\_dir\_fd*, *dst\_dir\_fd* и *follow\_symlinks*.12691270Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *src* и *dst*.12711272#### `os.listdir(path='.')`12731274Возвращает список, содержащий имена записей в каталоге, заданном *path*. Список находится в произвольном порядке и не включает специальные записи `'.'` и `'..'`, даже если они присутствуют в каталоге. Если файл удаляется из каталога или добавляется в него во время вызова этой функции, то будет ли включено имя для этого файла, не определено.12751276*path* может быть [объектом, подобным пути](https://python-all.ru/3.9/glossary.html#term-path-like-object). Если *path* имеет тип `bytes` (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)), возвращаемые имена файлов также будут иметь тип `bytes`; во всех остальных случаях они будут иметь тип `str`.12771278Эта функция также может поддерживать [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd); файловый дескриптор должен ссылаться на каталог.12791280Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.listdir` с аргументом `path`.12811282> **Примечание**1283>1284> Для кодирования имён файлов из `str` в `bytes` используйте [`fsencode()`](https://python-all.ru/3.9/library/os.html#os.fsencode).12851286> **См. также**1287>1288> Функция [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) возвращает записи каталога вместе с информацией об атрибутах файлов, что обеспечивает лучшую производительность для многих типичных сценариев использования.12891290Изменено в версии 3.2: Параметр *path* стал необязательным.12911292Новое в версии 3.3: добавлена возможность указывать *path* как открытый файловый дескриптор.12931294Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).12951296#### `os.lstat(path, *, dir_fd=None)`12971298Выполняет эквивалент системного вызова `lstat()` для указанного пути. Похоже на [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat), но не переходит по символическим ссылкам. Возвращает объект [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result).12991300На платформах, не поддерживающих символические ссылки, это псевдоним для [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat).13011302Начиная с Python 3.3, это эквивалентно `os.stat(path, dir_fd=dir_fd, follow_symlinks=False)`.13031304Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).13051306> **См. также**1307>1308> Функция [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat).13091310Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).13111312Изменено в версии 3.3: Добавлен параметр *dir\_fd*.13131314Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).13151316Изменено в версии 3.8: В Windows теперь открывает точки повторной обработки (reparse points), представляющие другой путь (суррогаты имени), включая символические ссылки и точки соединения каталогов. Другие типы точек повторной обработки разрешаются операционной системой как для [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat).13171318#### `os.mkdir(path, mode=0o777, *, dir_fd=None)`13191320Создаёт каталог с именем *path* и числовым режимом *mode*.13211322Если каталог уже существует, возникает [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError). Если родительский каталог в пути не существует, возникает [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError).13231324На некоторых системах *mode* игнорируется. Если он используется, сначала применяется маска текущего umask. Если установлены биты, отличные от последних 9 (то есть последних 3 цифр восьмеричного представления *mode*), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать [`chmod()`](https://python-all.ru/3.9/library/os.html#os.chmod).13251326В Windows значение *mode*, равное `0o700`, обрабатывается особым образом: применяется управление доступом к новому каталогу так, что доступ имеют только текущий пользователь и администраторы. Другие значения *mode* игнорируются.13271328Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).13291330Также можно создавать временные каталоги; см. функцию [`tempfile.mkdtemp()`](https://python-all.ru/3.9/library/tempfile.html#tempfile.mkdtemp) модуля [`tempfile`](https://python-all.ru/3.9/library/tempfile.html#module-tempfile).13311332Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.mkdir` с аргументами `path`, `mode`, `dir_fd`.13331334Новое в версии 3.3: Аргумент *dir\_fd*.13351336Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).13371338Изменено в версии 3.9.20: Windows теперь обрабатывает *mode* как `0o700`.13391340#### `os.makedirs(name, mode=0o777, exist_ok=False)`13411342Функция рекурсивного создания каталогов. Похожа на [`mkdir()`](https://python-all.ru/3.9/library/os.html#os.mkdir), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога.13431344Параметр *mode* передаётся в [`mkdir()`](https://python-all.ru/3.9/library/os.html#os.mkdir) для создания конечного каталога; описание того, как он интерпретируется, см. в [описании mkdir()](https://python-all.ru/3.9/library/os.html#mkdir-modebits). Чтобы задать биты прав доступа для любых вновь создаваемых родительских каталогов, можно установить umask перед вызовом [`makedirs()`](https://python-all.ru/3.9/library/os.html#os.makedirs). Биты прав доступа существующих родительских каталогов не изменяются.13451346Если *exist\_ok* равно `False` (значение по умолчанию), то [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError) возбуждается, если целевой каталог уже существует.13471348> **Примечание**1349>1350> [`makedirs()`](https://python-all.ru/3.9/library/os.html#os.makedirs) запутается, если элементы пути для создания включают [`pardir`](https://python-all.ru/3.9/library/os.html#os.pardir) (например, «..» в UNIX-системах).13511352Эта функция корректно обрабатывает UNC-пути.13531354Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.mkdir` с аргументами `path`, `mode`, `dir_fd`.13551356Новое в версии 3.2: Параметр *exist\_ok*.13571358Изменено в версии 3.4.1: До Python 3.4.1, если *exist\_ok* было `True` и каталог существовал, [`makedirs()`](https://python-all.ru/3.9/library/os.html#os.makedirs) всё равно вызывал ошибку, если *mode* не совпадал с режимом существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. См. [bpo-21082](https://python-all.ru/3.9/library/os.html).13591360Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).13611362Изменено в версии 3.7: Аргумент *mode* больше не влияет на биты прав доступа вновь создаваемых промежуточных каталогов.13631364#### `os.mkfifo(path, mode=0o666, *, dir_fd=None)`13651366Создаёт FIFO (именованный канал) с именем *path* и числовым режимом *mode*. Значение текущего umask сначала вычитается из режима.13671368Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).13691370FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока их не удалят (например, с помощью [`os.unlink()`](https://python-all.ru/3.9/library/os.html#os.unlink)). Как правило, FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, что [`mkfifo()`](https://python-all.ru/3.9/library/os.html#os.mkfifo) не открывает FIFO – он только создаёт точку встречи.13711372[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.13731374Новое в версии 3.3: Аргумент *dir\_fd*.13751376Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).13771378#### `os.mknod(path, mode=0o600, device=0, *, dir_fd=None)`13791380Создаёт узел файловой системы (файл, специальный файл устройства или именованный канал) с именем *path*. *mode* задаёт как права доступа, так и тип создаваемого узла; значение получается комбинированием (побитовым ИЛИ) с одной из констант `stat.S_IFREG`, `stat.S_IFCHR`, `stat.S_IFBLK` и `stat.S_IFIFO` (эти константы доступны в [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat)). Для `stat.S_IFCHR` и `stat.S_IFBLK` параметр *device* определяет вновь создаваемый специальный файл устройства (вероятно, с помощью [`os.makedev()`](https://python-all.ru/3.9/library/os.html#os.makedev)); в противном случае он игнорируется.13811382Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).13831384[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.13851386Новое в версии 3.3: Аргумент *dir\_fd*.13871388Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).13891390#### `os.major(device)`13911392Извлекает старший номер устройства из сырого номера устройства (обычно поля `st_dev` или `st_rdev` из `stat`).13931394#### `os.minor(device)`13951396Извлекает младший номер устройства из сырого номера устройства (обычно поля `st_dev` или `st_rdev` из `stat`).13971398#### `os.makedev(major, minor)`13991400Составляет сырой номер устройства из старшего и младшего номеров устройства.14011402#### `os.pathconf(path, name)`14031404Возвращает информацию о системной конфигурации для указанного файла. *name* задаёт запрашиваемое значение конфигурации; это может быть строка, содержащая имя определённого системного значения. Эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). На некоторых платформах могут быть также определены дополнительные имена. Имена, известные операционной системе, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это соответствие, допускается также передача целого числа в качестве *name*.14051406Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.9/library/errno.html#errno.EINVAL) в качестве кода ошибки.14071408Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd).14091410[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.14111412Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).14131414#### `os.pathconf_names`14151416Словарь, отображающий имена, принимаемые функциями [`pathconf()`](https://python-all.ru/3.9/library/os.html#os.pathconf) и [`fpathconf()`](https://python-all.ru/3.9/library/os.html#os.fpathconf), в целочисленные значения, определённые для этих имён хост-операционной системой. Его можно использовать для определения набора имён, известных системе.14171418[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.14191420#### `os.readlink(path, *, dir_fd=None)`14211422Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным путём; если он относительный, его можно преобразовать в абсолютный с помощью `os.path.join(os.path.dirname(path), result)`.14231424Если *path* – строковый объект (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)), результат также будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если *path* – объект bytes (напрямую или косвенно), результатом будет объект bytes.14251426Эта функция также поддерживает [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).14271428При попытке разрешить путь, который может содержать ссылки, используйте [`realpath()`](https://python-all.ru/3.9/library/os.path.html#os.path.realpath) для корректной обработки рекурсии и различий платформ.14291430[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.14311432Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).14331434Новое в версии 3.3: Аргумент *dir\_fd*.14351436Изменено в версии 3.6: Принимает [path-подобный объект](https://python-all.ru/3.9/glossary.html#term-path-like-object) на Unix.14371438Изменено в версии 3.8: Принимает [path-подобный объект](https://python-all.ru/3.9/glossary.html#term-path-like-object) и объект bytes на Windows.14391440Изменено в версии 3.8: Добавлена поддержка точек соединения каталогов, а также изменено возвращаемое значение: теперь возвращается путь подстановки (который обычно включает префикс `\\?\`) вместо необязательного поля «print name», которое возвращалось ранее.14411442#### `os.remove(path, *, dir_fd=None)`14431444Удаляет файл *path*. Если *path* является каталогом, возбуждается [`IsADirectoryError`](https://python-all.ru/3.9/library/exceptions.html#IsADirectoryError). Для удаления каталогов используйте [`rmdir()`](https://python-all.ru/3.9/library/os.html#os.rmdir). Если файл не существует, возбуждается [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError).14451446Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).14471448В Windows попытка удалить файл, который используется, приводит к возбуждению исключения; в Unix запись в каталоге удаляется, но память, выделенная файлу, не освобождается, пока исходный файл не перестанет использоваться.14491450Эта функция семантически идентична [`unlink()`](https://python-all.ru/3.9/library/os.html#os.unlink).14511452Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.14531454Новое в версии 3.3: Аргумент *dir\_fd*.14551456Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).14571458#### `os.removedirs(name)`14591460Рекурсивно удаляет каталоги. Работает как [`rmdir()`](https://python-all.ru/3.9/library/os.html#os.rmdir), за исключением того, что если конечный каталог успешно удалён, [`removedirs()`](https://python-all.ru/3.9/library/os.html#os.removedirs) пытается последовательно удалить все родительские каталоги, указанные в *path*, пока не возникнет ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст). Например, `os.removedirs('foo/bar/baz')` сначала удалит каталог `'foo/bar/baz'`, а затем удалит `'foo/bar'` и `'foo'`, если они пусты. Возбуждает [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError), если конечный каталог не удалось удалить.14611462Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.14631464Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).14651466#### `os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`14671468Переименовывает файл или каталог *src* в *dst*. Если *dst* существует, операция завершится неудачей с подклассом [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) в ряде случаев:14691470В Windows, если *dst* существует, всегда возбуждается [`FileExistsError`](https://python-all.ru/3.9/library/exceptions.html#FileExistsError).14711472В Unix, если *src* – файл, а *dst* – каталог, или наоборот, будет возбуждено [`IsADirectoryError`](https://python-all.ru/3.9/library/exceptions.html#IsADirectoryError) или [`NotADirectoryError`](https://python-all.ru/3.9/library/exceptions.html#NotADirectoryError) соответственно. Если оба являются каталогами и *dst* пуст, *dst* будет бесшумно заменён. Если *dst* – непустой каталог, возбуждается [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError). Если оба – файлы, *dst* будет бесшумно заменён, если у пользователя есть разрешение. Операция может завершиться ошибкой в некоторых разновидностях Unix, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование является атомарной операцией (это требуется стандартом POSIX).14731474Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [путей, относительных к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).14751476Если требуется кроссплатформенная перезапись целевого объекта, используйте [`replace()`](https://python-all.ru/3.9/library/os.html#os.replace).14771478Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.14791480Новое в версии 3.3: Аргументы *src\_dir\_fd* и *dst\_dir\_fd*.14811482Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *src* и *dst*.14831484#### `os.renames(old, new)`14851486Функция рекурсивного переименования каталогов или файлов. Работает как [`rename()`](https://python-all.ru/3.9/library/os.html#os.rename), за исключением того, что сначала предпринимается попытка создать все промежуточные каталоги, необходимые для формирования нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, будут удалены с помощью [`removedirs()`](https://python-all.ru/3.9/library/os.html#os.removedirs).14871488> **Примечание**1489>1490> Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.14911492Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.14931494Изменено в версии 3.6: Теперь принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *old* и *new*.14951496#### `os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`14971498Переименовывает файл или каталог *src* в *dst*. Если *dst* – непустой каталог, будет возбуждено [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError). Если *dst* существует и является файлом, он будет заменён без сообщения, если у пользователя есть разрешение. Операция может завершиться неудачей, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).14991500Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [путей, относительных к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).15011502Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.rename` с аргументами `src`, `dst`, `src_dir_fd`, `dst_dir_fd`.15031504Новое в версии 3.3.15051506Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *src* и *dst*.15071508#### `os.rmdir(path, *, dir_fd=None)`15091510Удаляет каталог *path*. Если каталог не существует или не пуст, вызывается [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError) или [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) соответственно. Для удаления целых деревьев каталогов можно использовать [`shutil.rmtree()`](https://python-all.ru/3.9/library/shutil.html#shutil.rmtree).15111512Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).15131514Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.rmdir` с аргументами `path`, `dir_fd`.15151516Новое в версии 3.3: Параметр *dir\_fd*.15171518Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).15191520#### `os.scandir(path='.')`15211522Возвращает итератор объектов [`os.DirEntry`](https://python-all.ru/3.9/library/os.html#os.DirEntry), соответствующих записям в каталоге, заданном *path*. Записи возвращаются в произвольном порядке, а специальные записи `'.'` и `'..'` не включаются. Если файл был удалён или добавлен в каталог после создания итератора, не определено, будет ли включена запись для этого файла.15231524Использование [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) вместо [`listdir()`](https://python-all.ru/3.9/library/os.html#os.listdir) может значительно повысить производительность кода, которому также требуется информация о типе файла или его атрибутах, поскольку объекты [`os.DirEntry`](https://python-all.ru/3.9/library/os.html#os.DirEntry) предоставляют эту информацию, если операционная система предоставляет её при сканировании каталога. Все методы [`os.DirEntry`](https://python-all.ru/3.9/library/os.html#os.DirEntry) могут выполнять системный вызов, но [`is_dir()`](https://python-all.ru/3.9/library/os.html#os.DirEntry.is_dir) и [`is_file()`](https://python-all.ru/3.9/library/os.html#os.DirEntry.is_file) обычно требуют системного вызова только для символических ссылок; [`os.DirEntry.stat()`](https://python-all.ru/3.9/library/os.html#os.DirEntry.stat) всегда требует системного вызова в Unix, но в Windows – только для символических ссылок.15251526*path* может быть [объектом, подобным пути](https://python-all.ru/3.9/glossary.html#term-path-like-object). Если *path* имеет тип `bytes` (напрямую или через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)), то типом атрибутов [`name`](https://python-all.ru/3.9/library/os.html#os.DirEntry.name) и [`path`](https://python-all.ru/3.9/library/os.html#os.DirEntry.path) каждого [`os.DirEntry`](https://python-all.ru/3.9/library/os.html#os.DirEntry) будет `bytes`; во всех остальных случаях они будут иметь тип `str`.15271528Эта функция также может поддерживать [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd); файловый дескриптор должен ссылаться на каталог.15291530Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.scandir` с аргументом `path`.15311532Итератор [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) поддерживает протокол [менеджера контекста](https://python-all.ru/3.9/glossary.html#term-context-manager) и имеет следующий метод:15331534#### `scandir.close()`15351536Закрывает итератор и освобождает занятые ресурсы.15371538Этот метод вызывается автоматически, когда итератор исчерпан или собран сборщиком мусора, или при возникновении ошибки во время итерации. Однако рекомендуется вызывать его явно или использовать инструкцию [`with`](https://python-all.ru/3.9/reference/compound_stmts.html#with).15391540Новое в версии 3.6.15411542Следующий пример демонстрирует простое использование [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) для отображения всех файлов (кроме каталогов) в заданном *пути*, имена которых не начинаются с `'.'`. Вызов `entry.is_file()` обычно не требует дополнительного системного вызова:15431544```python1545with os.scandir(path) as it:1546    for entry in it:1547        if not entry.name.startswith('.') and entry.is_file():1548            print(entry.name)1549```15501551> **Примечание**1552>1553> В системах на базе Unix [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) использует системные функции [opendir()](https://python-all.ru/3.9/library/os.html) и [readdir()](https://python-all.ru/3.9/library/os.html). В Windows используются функции Win32 [FindFirstFileW](https://python-all.ru/3.9/library/os.html) и [FindNextFileW](https://python-all.ru/3.9/library/os.html).15541555Новое в версии 3.5.15561557Новое в версии 3.6: Добавлена поддержка протокола [менеджера контекста](https://python-all.ru/3.9/glossary.html#term-context-manager) и метода [`close()`](https://python-all.ru/3.9/library/os.html#os.scandir.close). Если итератор [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) не исчерпан и не закрыт явно, в его деструкторе будет выброшено предупреждение [`ResourceWarning`](https://python-all.ru/3.9/library/exceptions.html#ResourceWarning).15581559Функция принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).15601561Изменено в версии 3.7: Добавлена поддержка [файловых дескрипторов](https://python-all.ru/3.9/library/os.html#path-fd) в Unix.15621563#### `class os.DirEntry`15641565Объект, возвращаемый [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) для предоставления пути к файлу и других атрибутов записи каталога.15661567[`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) предоставляет как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызов `stat()` или `lstat()`, объект `os.DirEntry` кэширует результат.15681569Экземпляры `os.DirEntry` не предназначены для хранения в долгоживущих структурах данных; если известно, что метаданные файла изменились или прошло много времени с момента вызова [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir), вызовите `os.stat(entry.path)`, чтобы получить актуальную информацию.15701571Поскольку методы `os.DirEntry` могут выполнять системные вызовы, они также могут возбуждать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError). Если требуется очень точный контроль над ошибками, можно перехватывать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) при вызове одного из методов `os.DirEntry` и обрабатывать соответствующим образом.15721573Чтобы быть непосредственно используемым в качестве [объекта, подобного пути](https://python-all.ru/3.9/glossary.html#term-path-like-object), `os.DirEntry` реализует интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike).15741575Атрибуты и методы экземпляра `os.DirEntry`:15761577#### `name`15781579Базовое имя файла записи, относительно [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) аргумента *path*.15801581Атрибут [`name`](https://python-all.ru/3.9/library/os.html#os.name) будет иметь значение `bytes`, если [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) аргумент *path* имеет тип `bytes`, и `str` в противном случае. Используйте [`fsdecode()`](https://python-all.ru/3.9/library/os.html#os.fsdecode) для декодирования байтовых имен файлов.15821583#### `path`15841585Полное имя пути записи: эквивалентно `os.path.join(scandir_path, entry.name)`, где *scandir\_path* – это [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) *path* аргумент. Путь является абсолютным, только если аргумент [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) *path* был абсолютным. Если аргумент [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) *path* был [файловым дескриптором](https://python-all.ru/3.9/library/os.html#path-fd), то [`path`](https://python-all.ru/3.9/library/os.path.html#module-os.path) атрибут совпадает с атрибутом [`name`](https://python-all.ru/3.9/library/os.html#os.name).15861587Атрибут [`path`](https://python-all.ru/3.9/library/os.path.html#module-os.path) будет иметь значение `bytes`, если [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) аргумент *path* имеет тип `bytes`, и `str` в противном случае. Используйте [`fsdecode()`](https://python-all.ru/3.9/library/os.html#os.fsdecode) для декодирования байтовых имен файлов.15881589#### `inode()`15901591Возвращает номер инода записи.15921593Результат кэшируется в объекте `os.DirEntry`. Используйте `os.stat(entry.path, follow_symlinks=False).st_ino` для получения актуальной информации.15941595При первом (некэшированном) вызове системный вызов требуется в Windows, но не в Unix.15961597#### `is_dir(*, follow_symlinks=True)`15981599Возвращает `True`, если эта запись является каталогом или символической ссылкой, указывающей на каталог; возвращает `False`, если запись является или указывает на любой другой тип файла, или если она больше не существует.16001601Если *follow\_symlinks* имеет значение `False`, возвращает `True`, только если эта запись является каталогом (без перехода по символическим ссылкам); возвращает `False`, если запись является файлом любого другого типа или если она больше не существует.16021603Результат кэшируется в объекте `os.DirEntry`, с отдельным кэшем для *follow\_symlinks* `True` и `False`. Вызовите [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat) вместе с [`stat.S_ISDIR()`](https://python-all.ru/3.9/library/stat.html#stat.S_ISDIR) для получения актуальной информации.16041605При первом (некэшированном) вызове системный вызов не требуется в большинстве случаев. В частности, для несимволических ссылок ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают `dirent.d_type == DT_UNKNOWN`. Если запись является символической ссылкой, системный вызов потребуется для перехода по ссылке, если только *follow\_symlinks* не равен `False`.16061607Этот метод может вызвать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError), например [`PermissionError`](https://python-all.ru/3.9/library/exceptions.html#PermissionError), но [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError) перехватывается и не выбрасывается.16081609#### `is_file(*, follow_symlinks=True)`16101611Возвращает `True`, если эта запись является файлом или символической ссылкой, указывающей на файл; возвращает `False`, если запись является или указывает на каталог или другую запись, не являющуюся файлом, или если она больше не существует.16121613Если *follow\_symlinks* имеет значение `False`, возвращает `True`, только если эта запись является файлом (без перехода по символическим ссылкам); возвращает `False`, если запись является каталогом или другой записью, не являющейся файлом, или если она больше не существует.16141615Результат кэшируется в объекте `os.DirEntry`. Кэширование, выполненные системные вызовы и возникшие исключения обрабатываются в соответствии с [`is_dir()`](https://python-all.ru/3.9/library/os.html#os.DirEntry.is_dir).16161617#### `is_symlink()`16181619Возвращает `True`, если эта запись является символической ссылкой (даже битой); возвращает `False`, если запись указывает на каталог или любой файл, или если она больше не существует.16201621Результат кэшируется в объекте `os.DirEntry`. Вызовите [`os.path.islink()`](https://python-all.ru/3.9/library/os.path.html#os.path.islink), чтобы получить актуальную информацию.16221623При первом некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают `dirent.d_type == DT_UNKNOWN`.16241625Этот метод может вызвать [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError), например [`PermissionError`](https://python-all.ru/3.9/library/exceptions.html#PermissionError), но [`FileNotFoundError`](https://python-all.ru/3.9/library/exceptions.html#FileNotFoundError) перехватывается и не выбрасывается.16261627#### `stat(*, follow_symlinks=True)`16281629Возвращает объект [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result) для этой записи. По умолчанию этот метод следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент `follow_symlinks=False`.16301631В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова, только если *follow\_symlinks* равен `True`, а запись является точкой повторной обработки (например, символической ссылкой или junction-точкой каталога).16321633В Windows атрибуты `st_ino`, `st_dev` и `st_nlink` объекта [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result) всегда равны нулю. Вызовите [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat), чтобы получить эти атрибуты.16341635Результат кэшируется в объекте `os.DirEntry`, с отдельным кэшем для *follow\_symlinks* `True` и `False`. Вызовите [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat), чтобы получить актуальную информацию.16361637Следует отметить, что между некоторыми атрибутами и методами `os.DirEntry` и [`pathlib.Path`](https://python-all.ru/3.9/library/pathlib.html#pathlib.Path) существует хорошее соответствие. В частности, атрибут `name` имеет тот же смысл, что и методы `is_dir()`, `is_file()`, `is_symlink()` и `stat()`.16381639Новое в версии 3.5.16401641Изменено в версии 3.6: Добавлена поддержка интерфейса [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike). Добавлена поддержка путей [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes) в Windows.16421643#### `os.stat(path, *, dir_fd=None, follow_symlinks=True)`16441645Получить статус файла или файлового дескриптора. Выполняет эквивалент системного вызова `stat()` для заданного пути. *path* может быть задан как строка или байты – напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike) – или как открытый файловый дескриптор. Возвращает объект [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result).16461647Эта функция обычно следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент `follow_symlinks=False` или используйте [`lstat()`](https://python-all.ru/3.9/library/os.html#os.lstat).16481649Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).16501651В Windows передача `follow_symlinks=False` отключает следование всем surrogate-точкам повторной обработки, включая символические ссылки и junction-точки каталогов. Другие типы точек повторной обработки, не похожие на ссылки или которые операционная система не может обработать, будут открыты напрямую. При следовании по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая предотвратила полный обход. Чтобы получить результаты stat для конечного пути в этом случае, используйте функцию [`os.path.realpath()`](https://python-all.ru/3.9/library/os.path.html#os.path.realpath) для разрешения имени пути насколько это возможно и вызовите [`lstat()`](https://python-all.ru/3.9/library/os.html#os.lstat) для результата. Это не относится к битым символическим ссылкам или junction-точкам, которые вызывают обычные исключения.16521653Пример:16541655```python1656>>> import os1657>>> statinfo = os.stat('somefile.txt')1658>>> statinfo1659os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,1660st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,1661st_mtime=1297230027, st_ctime=1297230027)1662>>> statinfo.st_size16632641664```16651666> **См. также**1667>1668> Функции [`fstat()`](https://python-all.ru/3.9/library/os.html#os.fstat) и [`lstat()`](https://python-all.ru/3.9/library/os.html#os.lstat).16691670Новое в версии 3.3: Добавлены аргументы *dir\_fd* и *follow\_symlinks*, позволяющие указывать файловый дескриптор вместо пути.16711672Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).16731674Изменено в версии 3.8: В Windows теперь обрабатываются все точки повторной обработки, которые может разрешить операционная система, а передача `follow_symlinks=False` отключает следование всем surrogate-точкам повторной обработки. Если операционная система достигает точки повторной обработки, которую не может обработать, *stat* теперь возвращает информацию для исходного пути, как если бы был указан `follow_symlinks=False`, вместо вызова ошибки.16751676#### `class os.stat_result`16771678Объект, атрибуты которого примерно соответствуют членам структуры `stat`. Используется для результата [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.9/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.9/library/os.html#os.lstat).16791680Атрибуты:16811682#### `st_mode`16831684Режим файла: тип файла и биты режима (права доступа).16851686#### `st_ino`16871688Зависит от платформы, но если не равно нулю, однозначно идентифицирует файл для заданного значения `st_dev`. Обычно:16891690- номер inode в Unix,1691- [индекс файла](https://python-all.ru/3.9/library/os.html) на Windows16921693#### `st_dev`16941695Идентификатор устройства, на котором находится этот файл.16961697#### `st_nlink`16981699Количество жёстких ссылок.17001701#### `st_uid`17021703Идентификатор пользователя-владельца файла.17041705#### `st_gid`17061707Идентификатор группы владельца файла.17081709#### `st_size`17101711Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.17121713Временные метки:17141715#### `st_atime`17161717Время последнего доступа, выраженное в секундах.17181719#### `st_mtime`17201721Время последнего изменения содержимого, выраженное в секундах.17221723#### `st_ctime`17241725Зависит от платформы:17261727- время последнего изменения метаданных в Unix,1728- время создания в Windows, выраженное в секундах.17291730#### `st_atime_ns`17311732Время последнего доступа, выраженное в наносекундах в виде целого числа.17331734#### `st_mtime_ns`17351736Время последнего изменения содержимого, выраженное в наносекундах в виде целого числа.17371738#### `st_ctime_ns`17391740Зависит от платформы:17411742- время последнего изменения метаданных в Unix,1743- время создания в Windows, выраженное в наносекундах в виде целого числа.17441745> **Примечание**1746>1747> Точный смысл и разрешение атрибутов [`st_atime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime) и [`st_ctime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime) зависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, атрибут [`st_mtime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime) имеет разрешение 2 секунды, а [`st_atime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime) – всего 1 день. Подробности см. в документации операционной системы.1748>1749> Аналогично, хотя [`st_atime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime_ns), и [`st_ctime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime_ns) всегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, которые обеспечивают наносекундную точность, объект с плавающей запятой, используемый для хранения [`st_atime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime) и [`st_ctime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime), не может сохранить всю эту точность и поэтому будет немного неточным. Если требуются точные временные метки, всегда следует использовать [`st_atime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime_ns) и [`st_ctime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime_ns).17501751В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:17521753#### `st_blocks`17541755Количество 512-байтовых блоков, выделенных файлу. Может быть меньше [`st_size`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_size)/512, если в файле есть дырки (holes).17561757#### `st_blksize`17581759«Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).17601761#### `st_rdev`17621763Тип устройства, если inode является устройством.17641765#### `st_flags`17661767Определённые пользователем флаги для файла.17681769В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):17701771#### `st_gen`17721773Номер поколения файла.17741775#### `st_birthtime`17761777Время создания файла.17781779В Solaris и производных системах также могут быть доступны следующие атрибуты:17801781#### `st_fstype`17821783Строка, уникально идентифицирующая тип файловой системы, содержащей файл.17841785В системах macOS также могут быть доступны следующие атрибуты:17861787#### `st_rsize`17881789Реальный размер файла.17901791#### `st_creator`17921793Создатель файла.17941795#### `st_type`17961797Тип файла.17981799В системах Windows также доступны следующие атрибуты:18001801#### `st_file_attributes`18021803Атрибуты файлов Windows: член `dwFileAttributes` структуры `BY_HANDLE_FILE_INFORMATION`, возвращаемой функцией `GetFileInformationByHandle()`. Смотрите константы `FILE_ATTRIBUTE_*` в модуле [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat).18041805#### `st_reparse_tag`18061807Когда у [`st_file_attributes`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_file_attributes) установлен `FILE_ATTRIBUTE_REPARSE_POINT`, это поле содержит тег, идентифицирующий тип точки повторной обработки. Смотрите константы `IO_REPARSE_TAG_*` в модуле [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat).18081809Стандартный модуль [`stat`](https://python-all.ru/3.9/library/stat.html#module-stat) определяет функции и константы, полезные для извлечения информации из структуры `stat`. (В Windows некоторые поля заполняются фиктивными значениями.)18101811Для обратной совместимости экземпляр [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result) также доступен как кортеж из как минимум 10 целых чисел, представляющих наиболее важные (и переносимые) члены структуры `stat`, в порядке [`st_mode`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mode), [`st_ino`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ino), [`st_dev`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_dev), [`st_nlink`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_nlink), [`st_uid`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_uid), [`st_gid`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_gid), [`st_size`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_size), [`st_atime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime), [`st_ctime`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime). Некоторые реализации могут добавлять больше элементов в конец. Для совместимости со старыми версиями Python обращение к [`stat_result`](https://python-all.ru/3.9/library/os.html#os.stat_result) как к кортежу всегда возвращает целые числа.18121813Новое в версии 3.3: Добавлены члены [`st_atime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mtime_ns) и [`st_ctime_ns`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ctime_ns).18141815Новое в версии 3.5: Добавлен член [`st_file_attributes`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_file_attributes) в Windows.18161817Изменено в версии 3.5: Windows теперь возвращает индекс файла как [`st_ino`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_ino), если он доступен.18181819Новое в версии 3.7: Добавлен член [`st_fstype`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_fstype) для Solaris и производных.18201821Новое в версии 3.8: Добавлен член [`st_reparse_tag`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_reparse_tag) в Windows.18221823Изменено в версии 3.8: В Windows элемент [`st_mode`](https://python-all.ru/3.9/library/os.html#os.stat_result.st_mode) теперь идентифицирует специальные файлы как `S_IFCHR`, `S_IFIFO` или `S_IFBLK` по ситуации.18241825#### `os.statvfs(path)`18261827Выполняет системный вызов `statvfs()` для указанного пути. Возвращаемое значение – это объект, чьи атрибуты описывают файловую систему по указанному пути и соответствуют членам структуры `statvfs`, а именно: `f_bsize`, `f_frsize`, `f_blocks`, `f_bfree`, `f_bavail`, `f_files`, `f_ffree`, `f_favail`, `f_flag`, `f_namemax`, `f_fsid`.18281829Две константы уровня модуля определены для битовых флагов атрибута `f_flag`: если установлен `ST_RDONLY`, файловая система смонтирована только для чтения, а если установлен `ST_NOSUID`, семантика битов setuid/setgid отключена или не поддерживается.18301831Дополнительные константы уровня модуля определены для систем на базе GNU/glibc. Это `ST_NODEV` (запрет доступа к файлам устройств), `ST_NOEXEC` (запрет выполнения программ), `ST_SYNCHRONOUS` (запись синхронизируется немедленно), `ST_MANDLOCK` (разрешение обязательных блокировок в ФС), `ST_WRITE` (запись в файл/каталог/символическую ссылку), `ST_APPEND` (файл только для добавления), `ST_IMMUTABLE` (неизменяемый файл), `ST_NOATIME` (не обновлять время доступа), `ST_NODIRATIME` (не обновлять время доступа к каталогу), `ST_RELATIME` (обновлять atime относительно mtime/ctime).18321833Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd).18341835[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.18361837Изменено в версии 3.2: Были добавлены константы `ST_RDONLY` и `ST_NOSUID`.18381839Новое в версии 3.3: добавлена возможность указывать *path* как открытый файловый дескриптор.18401841Изменено в версии 3.4: Были добавлены константы `ST_NODEV`, `ST_NOEXEC`, `ST_SYNCHRONOUS`, `ST_MANDLOCK`, `ST_WRITE`, `ST_APPEND`, `ST_IMMUTABLE`, `ST_NOATIME`, `ST_NODIRATIME` и `ST_RELATIME`.18421843Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).18441845Новое в версии 3.7: Добавлен `f_fsid`.18461847#### `os.supports_dir_fd`18481849Объект [`set`](https://python-all.ru/3.9/library/stdtypes.html#set), указывающий, какие функции в модуле [`os`](https://python-all.ru/3.9/library/os.html#module-os) принимают открытый файловый дескриптор для своего параметра *dir\_fd*. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации параметра *dir\_fd*, доступна не на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать *dir\_fd*, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (Указание `None` для *dir\_fd* всегда поддерживается на всех платформах.)18501851Чтобы проверить, принимает ли конкретная функция открытый файловый дескриптор для своего параметра *dir\_fd*, используйте оператор `in` на `supports_dir_fd`. Например, это выражение вычисляется в `True`, если [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat) принимает открытые файловые дескрипторы для *dir\_fd* на локальной платформе:18521853```python1854os.stat in os.supports_dir_fd1855```18561857В настоящее время параметры *dir\_fd* работают только на платформах Unix; ни один из них не работает на Windows.18581859Новое в версии 3.3.18601861#### `os.supports_effective_ids`18621863Объект [`set`](https://python-all.ru/3.9/library/stdtypes.html#set), указывающий, разрешает ли [`os.access()`](https://python-all.ru/3.9/library/os.html#os.access) указывать `True` для своего параметра *effective\_ids* на локальной платформе. (Указание `False` для *effective\_ids* всегда поддерживается на всех платформах.) Если локальная платформа это поддерживает, коллекция будет содержать [`os.access()`](https://python-all.ru/3.9/library/os.html#os.access); в противном случае она будет пуста.18641865Это выражение вычисляется в `True`, если [`os.access()`](https://python-all.ru/3.9/library/os.html#os.access) поддерживает `effective_ids=True` на локальной платформе:18661867```python1868os.access in os.supports_effective_ids1869```18701871В настоящее время *effective\_ids* поддерживается только на платформах Unix; он не работает на Windows.18721873Новое в версии 3.3.18741875#### `os.supports_fd`18761877Объект [`set`](https://python-all.ru/3.9/library/stdtypes.html#set), указывающий, какие функции в модуле [`os`](https://python-all.ru/3.9/library/os.html#module-os) разрешают указывать свой параметр *path* как открытый файловый дескриптор на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для принятия открытых файловых дескрипторов в качестве аргументов *path*, доступна не на всех платформах, поддерживаемых Python.18781879Чтобы определить, разрешает ли конкретная функция указывать открытый файловый дескриптор для своего параметра *path*, используйте оператор `in` на `supports_fd`. Например, это выражение вычисляется в `True`, если [`os.chdir()`](https://python-all.ru/3.9/library/os.html#os.chdir) принимает открытые файловые дескрипторы для *path* на локальной платформе:18801881```python1882os.chdir in os.supports_fd1883```18841885Новое в версии 3.3.18861887#### `os.supports_follow_symlinks`18881889Объект [`set`](https://python-all.ru/3.9/library/stdtypes.html#set), указывающий, какие функции в модуле [`os`](https://python-all.ru/3.9/library/os.html#module-os) принимают `False` для своего параметра *follow\_symlinks* на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации *follow\_symlinks*, недоступна на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать *follow\_symlinks*, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (Указание `True` для *follow\_symlinks* всегда поддерживается на всех платформах.)18901891Чтобы проверить, принимает ли конкретная функция `False` для своего параметра *follow\_symlinks*, используйте оператор `in` на `supports_follow_symlinks`. Например, это выражение вычисляется в `True`, если вы можете указать `follow_symlinks=False` при вызове [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat) на локальной платформе:18921893```python1894os.stat in os.supports_follow_symlinks1895```18961897Новое в версии 3.3.18981899#### `os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)`19001901Создает символическую ссылку, указывающую на *src* с именем *dst*.19021903В Windows символическая ссылка представляет собой либо файл, либо каталог и не изменяется динамически под цель. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если *target\_is\_directory* равен `True`, или как файловая ссылка (по умолчанию) в противном случае. На платформах, отличных от Windows, параметр *target\_is\_directory* игнорируется.19041905Эта функция может поддерживать [пути, относительные к дескрипторам каталогов](https://python-all.ru/3.9/library/os.html#dir-fd).19061907> **Примечание**1908>1909> В новых версиях Windows 10 непривилегированные учетные записи могут создавать символические ссылки, если включен режим разработчика. Если режим разработчика недоступен или не включен, требуется привилегия *SeCreateSymbolicLinkPrivilege*, или процесс должен быть запущен от имени администратора.1910>1911> [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) возникает, когда функция вызывается непривилегированным пользователем.19121913Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.symlink` с аргументами `src`, `dst`, `dir_fd`.19141915[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.19161917Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).19181919Новое в версии 3.3: Добавлен аргумент *dir\_fd*, и теперь *target\_is\_directory* доступен на платформах, отличных от Windows.19201921Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *src* и *dst*.19221923Изменено в версии 3.8: Добавлена поддержка непривилегированных символических ссылок в Windows с режимом разработчика.19241925#### `os.sync()`19261927Принудительная запись всех данных на диск.19281929[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.19301931Новое в версии 3.3.19321933#### `os.truncate(path, length)`19341935Усекает файл, соответствующий *path*, так, чтобы его размер не превышал *length* байт.19361937Эта функция может поддерживать [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd).19381939Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.truncate` с аргументами `path`, `length`.19401941[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.19421943Новое в версии 3.3.19441945Изменено в версии 3.5: Добавлена поддержка Windows19461947Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).19481949#### `os.unlink(path, *, dir_fd=None)`19501951Удаляет файл *path*. Эта функция семантически идентична [`remove()`](https://python-all.ru/3.9/library/os.html#os.remove); имя `unlink` – это её традиционное имя в Unix. Подробнее см. документацию [`remove()`](https://python-all.ru/3.9/library/os.html#os.remove).19521953Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.remove` с аргументами `path`, `dir_fd`.19541955Новое в версии 3.3: Параметр *dir\_fd*.19561957Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).19581959#### `os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)`19601961Устанавливает время доступа и изменения файла, указанного в *path*.19621963[`utime()`](https://python-all.ru/3.9/library/os.html#os.utime) принимает два необязательных параметра: *times* и *ns*. Они задают время, устанавливаемое для *path*, и используются следующим образом:19641965- Если указан *ns*, то это должен быть кортеж из двух элементов вида `(atime_ns, mtime_ns)`, где каждый элемент – целое число, выражающее наносекунды.1966- Если *times* не равен `None`, то это должен быть кортеж из двух элементов вида `(atime, mtime)`, где каждый элемент – int или float, выражающий секунды.1967- Если *times* равен `None`, а *ns* не указан, то это эквивалентно указанию `ns=(atime_ns, mtime_ns)`, где оба времени равны текущему времени.19681969Указывать кортежи одновременно для *times* и *ns* – ошибка.19701971Обратите внимание, что точное время, которое вы здесь задаёте, может не возвращаться последующим вызовом [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat) в зависимости от разрешения, с которым ваша операционная система записывает время доступа и модификации; см. [`stat()`](https://python-all.ru/3.9/library/os.html#os.stat). Лучший способ сохранить точное время – использовать поля *st\_atime\_ns* и *st\_mtime\_ns* из объекта результата [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat) с параметром *ns* функции *utime*.19721973Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd), [пути относительно дескрипторов каталогов](https://python-all.ru/3.9/library/os.html#dir-fd) и [не следование по символьным ссылкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).19741975Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.utime` с аргументами `path`, `times`, `ns`, `dir_fd`.19761977Новое в версии 3.3: Добавлена поддержка указания *path* в виде открытого файлового дескриптора, а также параметров *dir\_fd*, *follow\_symlinks* и *ns*.19781979Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).19801981#### `os.walk(top, topdown=True, onerror=None, followlinks=False)`19821983Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге *top* (включая сам *top*) возвращает кортеж из трех элементов `(dirpath, dirnames, filenames)`.19841985*dirpath* – строка, путь к каталогу. *dirnames* – список имён подкаталогов внутри *dirpath* (за исключением `'.'` и `'..'`). *filenames* – список имён некаталожных файлов в *dirpath*. Обратите внимание, что имена в списках не содержат компонент пути. Чтобы получить полный путь (начинающийся с *top*) к файлу или каталогу в *dirpath*, используйте `os.path.join(dirpath, name)`. Упорядочены списки или нет, зависит от файловой системы. Если во время построения списков из каталога *dirpath* удаляется или добавляется файл, то не определено, будет ли имя этого файла включено.19861987Если необязательный аргумент *topdown* равен `True` или не указан, тройка для каталога генерируется до троек для всех его подкаталогов (каталоги обходятся сверху вниз). Если *topdown* равен `False`, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх). Независимо от значения *topdown*, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.19881989Когда *topdown* равен `True`, вызывающий код может изменить список *dirnames* на месте (возможно, используя [`del`](https://python-all.ru/3.9/reference/simple_stmts.html#del) или присваивание срезу), и [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) будет рекурсивно обходить только те подкаталоги, имена которых остались в *dirnames*; это можно использовать для обрезания дерева поиска, задания определенного порядка обхода или даже для уведомления [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) о каталогах, которые вызывающий код создает или переименовывает до того, как [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) возобновит работу. Изменение *dirnames*, когда *topdown* равен `False`, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в *dirnames* генерируются до того, как генерируется сам *dirpath*.19901991По умолчанию ошибки из вызова [`scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) игнорируются. Если указан необязательный аргумент *onerror*, это должна быть функция; она будет вызвана с одним аргументом – экземпляром [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError). Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибут `filename` объекта исключения.19921993По умолчанию [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) не будет спускаться в символические ссылки, ведущие к каталогам. Установите *followlinks* в `True`, чтобы посещать каталоги, на которые указывают симлинки, в системах, поддерживающих их.19941995> **Примечание**1996>1997> Имейте в виду, что установка *followlinks* в `True` может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) не отслеживает уже посещенные каталоги.19981999> **Примечание**2000>2001> Если передается относительный путь, не следует изменять текущий рабочий каталог между возобновлениями [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk). [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk) никогда не меняет текущий каталог и предполагает, что и его вызывающий код этого не делает.20022003В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:20042005```python2006import os2007from os.path import join, getsize2008for root, dirs, files in os.walk('python/Lib/email'):2009    print(root, "consumes", end=" ")2010    print(sum(getsize(join(root, name)) for name in files), end=" ")2011    print("bytes in", len(files), "non-directory files")2012    if 'CVS' in dirs:2013        dirs.remove('CVS')  # не заходить в CVS-каталоги2014```20152016В следующем примере (простая реализация [`shutil.rmtree()`](https://python-all.ru/3.9/library/shutil.html#shutil.rmtree)) обход дерева снизу вверх обязателен: [`rmdir()`](https://python-all.ru/3.9/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:20172018```python2019# Удалить всё, доступное из каталога с именем "top",2020# при условии отсутствия символических ссылок.2021# ВНИМАНИЕ: это опасно! Например, если top == '/', это2022# может удалить все ваши файлы на диске.2023import os2024for root, dirs, files in os.walk(top, topdown=False):2025    for name in files:2026        os.remove(os.path.join(root, name))2027    for name in dirs:2028        os.rmdir(os.path.join(root, name))2029```20302031Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.walk` с аргументами `top`, `topdown`, `onerror`, `followlinks`.20322033Изменено в версии 3.5: Эта функция теперь вызывает [`os.scandir()`](https://python-all.ru/3.9/library/os.html#os.scandir) вместо [`os.listdir()`](https://python-all.ru/3.9/library/os.html#os.listdir), что делает её быстрее за счет сокращения количества вызовов [`os.stat()`](https://python-all.ru/3.9/library/os.html#os.stat).20342035Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).20362037#### `os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)`20382039Это работает точно так же, как и [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk), за исключением того, что возвращает 4-кортеж `(dirpath, dirnames, filenames, dirfd)`, и поддерживает `dir_fd`.20402041*dirpath*, *dirnames* и *filenames* идентичны выводу [`walk()`](https://python-all.ru/3.9/library/os.html#os.walk), а *dirfd* – это файловый дескриптор, указывающий на каталог *dirpath*.20422043This function always supports [paths relative to directory descriptors](https://python-all.ru/3.9/library/os.html#dir-fd) and [not following symlinks](https://python-all.ru/3.9/library/os.html#follow-symlinks). Note however that, unlike other functions, the [`fwalk()`](https://python-all.ru/3.9/library/os.html#os.fwalk) default value for *follow\_symlinks* is `False`.20442045> **Примечание**2046>2047> Поскольку [`fwalk()`](https://python-all.ru/3.9/library/os.html#os.fwalk) возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощью [`dup()`](https://python-all.ru/3.9/library/os.html#os.dup)), если нужно сохранить их дольше.20482049В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:20502051```python2052import os2053for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):2054    print(root, "consumes", end="")2055    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),2056          end="")2057    print("bytes in", len(files), "non-directory files")2058    if 'CVS' in dirs:2059        dirs.remove('CVS')  # не заходить в CVS-каталоги2060```20612062В следующем примере обход дерева снизу вверх необходим: [`rmdir()`](https://python-all.ru/3.9/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:20632064```python2065# Удалить всё, доступное из каталога с именем "top",2066# при условии отсутствия символических ссылок.2067# ВНИМАНИЕ: это опасно! Например, если top == '/', это2068# может удалить все ваши файлы на диске.2069import os2070for root, dirs, files, rootfd in os.fwalk(top, topdown=False):2071    for name in files:2072        os.unlink(name, dir_fd=rootfd)2073    for name in dirs:2074        os.rmdir(name, dir_fd=rootfd)2075```20762077Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.fwalk` с аргументами `top`, `topdown`, `onerror`, `follow_symlinks`, `dir_fd`.20782079[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.20802081Новое в версии 3.3.20822083Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).20842085Изменено в версии 3.7: Добавлена поддержка путей [`bytes`](https://python-all.ru/3.9/library/stdtypes.html#bytes).20862087#### `os.memfd_create(name[, flags=os.MFD_CLOEXEC])`20882089Создаёт анонимный файл и возвращает файловый дескриптор, ссылающийся на него. Параметр *flags* должен быть одной из констант `os.MFD_*`, доступных в системе (или их побитовой комбинацией). По умолчанию новый файловый дескриптор является [ненаследуемым](https://python-all.ru/3.9/library/os.html#fd-inheritance).20902091Имя, переданное в *name*, используется как имя файла и будет отображаться как цель соответствующей символьной ссылки в каталоге `/proc/self/fd/`. Отображаемое имя всегда имеет префикс `memfd:` и служит только для отладки. Имена не влияют на поведение файлового дескриптора, поэтому несколько файлов могут иметь одно и то же имя без каких-либо побочных эффектов.20922093[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 3.17 или новее с glibc 2.27 или новее.20942095Новое в версии 3.8.20962097#### `os.MFD_CLOEXEC`20982099#### `os.MFD_ALLOW_SEALING`21002101#### `os.MFD_HUGETLB`21022103#### `os.MFD_HUGE_SHIFT`21042105#### `os.MFD_HUGE_MASK`21062107#### `os.MFD_HUGE_64KB`21082109#### `os.MFD_HUGE_512KB`21102111#### `os.MFD_HUGE_1MB`21122113#### `os.MFD_HUGE_2MB`21142115#### `os.MFD_HUGE_8MB`21162117#### `os.MFD_HUGE_16MB`21182119#### `os.MFD_HUGE_32MB`21202121#### `os.MFD_HUGE_256MB`21222123#### `os.MFD_HUGE_512MB`21242125#### `os.MFD_HUGE_1GB`21262127#### `os.MFD_HUGE_2GB`21282129#### `os.MFD_HUGE_16GB`21302131Эти флаги могут быть переданы в [`memfd_create()`](https://python-all.ru/3.9/library/os.html#os.memfd_create).21322133[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 3.17 или новее с glibc 2.27 или новее. Флаги `MFD_HUGE*` доступны только начиная с Linux 4.14.21342135Новое в версии 3.8.21362137### Расширенные атрибуты Linux21382139Новое в версии 3.3.21402141Все эти функции доступны только в Linux.21422143#### `os.getxattr(path, attribute, *, follow_symlinks=True)`21442145Возвращает значение расширенного атрибута файловой системы *attribute* для *path*. *attribute* может быть bytes или str (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)). Если это str, он кодируется с использованием кодировки файловой системы.21462147Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).21482149Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.getxattr` с аргументами `path`, `attribute`.21502151Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *path* и *attribute*.21522153#### `os.listxattr(path=None, *, follow_symlinks=True)`21542155Возвращает список расширенных атрибутов файловой системы для *path*. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если *path* равен `None`, [`listxattr()`](https://python-all.ru/3.9/library/os.html#os.listxattr) будет исследовать текущий каталог.21562157Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).21582159Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.listxattr` с аргументом `path`.21602161Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).21622163#### `os.removexattr(path, attribute, *, follow_symlinks=True)`21642165Удаляет расширенный атрибут файловой системы *attribute* из *path*. *attribute* должен быть bytes или str (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)). Если это строка, она кодируется с помощью кодировки файловой системы.21662167Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).21682169Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.removexattr` с аргументами `path`, `attribute`.21702171Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *path* и *attribute*.21722173#### `os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)`21742175Устанавливает расширенный атрибут файловой системы *attribute* для *path* в значение *value*. *attribute* должен быть bytes или str без встроенных NUL (напрямую или косвенно через интерфейс [`PathLike`](https://python-all.ru/3.9/library/os.html#os.PathLike)). Если это str, она кодируется с помощью кодировки файловой системы. *flags* может быть [`XATTR_REPLACE`](https://python-all.ru/3.9/library/os.html#os.XATTR_REPLACE) или [`XATTR_CREATE`](https://python-all.ru/3.9/library/os.html#os.XATTR_CREATE). Если указан [`XATTR_REPLACE`](https://python-all.ru/3.9/library/os.html#os.XATTR_REPLACE), а атрибут не существует, будет возбуждено `ENODATA`. Если указан [`XATTR_CREATE`](https://python-all.ru/3.9/library/os.html#os.XATTR_CREATE), а атрибут уже существует, атрибут не будет создан и будет возбуждено `EEXISTS`.21762177Эта функция поддерживает [указание файлового дескриптора](https://python-all.ru/3.9/library/os.html#path-fd) и [отказ от следования симлинкам](https://python-all.ru/3.9/library/os.html#follow-symlinks).21782179> **Примечание**2180>2181> В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.21822183Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.setxattr` с аргументами `path`, `attribute`, `value`, `flags`.21842185Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object) для *path* и *attribute*.21862187#### `os.XATTR_SIZE_MAX`21882189Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.21902191#### `os.XATTR_CREATE`21922193Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.9/library/os.html#os.setxattr). Оно указывает, что операция должна создать атрибут.21942195#### `os.XATTR_REPLACE`21962197Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.9/library/os.html#os.setxattr). Оно указывает, что операция должна заменить существующий атрибут.21982199## Управление процессами22002201Эти функции можно использовать для создания процессов и управления ими.22022203Различные функции [`exec*`](https://python-all.ru/3.9/library/os.html#os.execl) принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это `argv[0]`, передаваемый в `main()` программы. Например, `os.execv('/bin/echo', ['foo', 'bar'])` выведет на стандартный вывод только `bar`; `foo` будет проигнорирован.22042205#### `os.abort()`22062207Генерирует сигнал `SIGABRT` для текущего процесса. На Unix поведение по умолчанию – создание дампа памяти; на Windows процесс немедленно возвращает код завершения `3`. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный для `SIGABRT` с помощью [`signal.signal()`](https://python-all.ru/3.9/library/signal.html#signal.signal).22082209#### `os.add_dll_directory(path)`22102211Добавляет путь в путь поиска DLL.22122213Этот путь поиска используется при разрешении зависимостей импортированных модулей-расширений (сам модуль разрешается через [`sys.path`](https://python-all.ru/3.9/library/sys.html#sys.path)), а также функциями [`ctypes`](https://python-all.ru/3.9/library/ctypes.html#module-ctypes).22142215Удалите каталог, вызвав **close()** для возвращённого объекта или используя его в выражении [`with`](https://python-all.ru/3.9/reference/compound_stmts.html#with).22162217Смотрите [документацию Microsoft](https://python-all.ru/3.9/library/os.html) для получения дополнительной информации о загрузке DLL.22182219Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.add_dll_directory` с аргументом `path`.22202221[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Windows.22222223Новое в версии 3.8: в предыдущих версиях CPython разрешение DLL выполнялось с использованием стандартного поведения текущего процесса. Это приводило к несостыковкам: например, поиск иногда происходил только в `PATH` или в текущем рабочем каталоге, а системные функции вроде `AddDllDirectory` не оказывали влияния.22242225В версии 3.8 два основных способа загрузки DLL теперь явно переопределяют поведение на уровне процесса для обеспечения согласованности. Смотрите [примечания по переносу](https://python-all.ru/3.9/whatsnew/3.8.html#bpo-36085-whatsnew) для информации об обновлении библиотек.22262227#### `os.execl(path, arg0, arg1, ...)`22282229#### `os.execle(path, arg0, arg1, ..., env)`22302231#### `os.execlp(file, arg0, arg1, ...)`22322233#### `os.execlpe(file, arg0, arg1, ..., env)`22342235#### `os.execv(path, args)`22362237#### `os.execve(path, args, env)`22382239#### `os.execvp(file, args)`22402241#### `os.execvpe(file, args, env)`22422243Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и получает тот же идентификатор процесса, что и вызывающий. Ошибки сообщаются как исключения [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError).22442245Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому если на этих открытых файлах могут быть буферизованные данные, следует сбросить их с помощью `sys.stdout.flush()` или [`os.fsync()`](https://python-all.ru/3.9/library/os.html#os.fsync) перед вызовом функции [`exec*`](https://python-all.ru/3.9/library/os.html#os.execl).22462247Варианты с буквами «l» и «v» функций [`exec*`](https://python-all.ru/3.9/library/os.html#os.execl) различаются способом передачи аргументов командной строки. Варианты «l», пожалуй, проще в использовании, если количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными аргументами функций `execl*()`. Варианты «v» удобны, когда количество параметров переменное: аргументы передаются в виде списка или кортежа как параметр *args*. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, хотя это и не принудительно.22482249Варианты, содержащие "p" ближе к концу ([`execlp()`](https://python-all.ru/3.9/library/os.html#os.execlp), [`execlpe()`](https://python-all.ru/3.9/library/os.html#os.execlpe), [`execvp()`](https://python-all.ru/3.9/library/os.html#os.execvp) и [`execvpe()`](https://python-all.ru/3.9/library/os.html#os.execvpe)), используют переменную окружения `PATH` для поиска *файла* программы. При замене окружения (с помощью одного из вариантов [`exec*e`](https://python-all.ru/3.9/library/os.html#os.execl), обсуждаемых в следующем абзаце) новая среда используется как источник переменной `PATH`. Остальные варианты, [`execl()`](https://python-all.ru/3.9/library/os.html#os.execl), [`execle()`](https://python-all.ru/3.9/library/os.html#os.execle), [`execv()`](https://python-all.ru/3.9/library/os.html#os.execv) и [`execve()`](https://python-all.ru/3.9/library/os.html#os.execve), не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать правильный абсолютный или относительный путь.22502251Для [`execle()`](https://python-all.ru/3.9/library/os.html#os.execle), [`execlpe()`](https://python-all.ru/3.9/library/os.html#os.execlpe), [`execve()`](https://python-all.ru/3.9/library/os.html#os.execve) и [`execvpe()`](https://python-all.ru/3.9/library/os.html#os.execvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, используемым для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`execl()`](https://python-all.ru/3.9/library/os.html#os.execl), [`execlp()`](https://python-all.ru/3.9/library/os.html#os.execlp), [`execv()`](https://python-all.ru/3.9/library/os.html#os.execv) и [`execvp()`](https://python-all.ru/3.9/library/os.html#os.execvp) заставляют новый процесс наследовать окружение текущего процесса.22522253Для [`execve()`](https://python-all.ru/3.9/library/os.html#os.execve) на некоторых платформах *path* также может быть указан в виде открытого файлового дескриптора. Эта функциональность может не поддерживаться на вашей платформе; можно проверить, доступна ли она, с помощью [`os.supports_fd`](https://python-all.ru/3.9/library/os.html#os.supports_fd). Если она недоступна, её использование вызовет [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).22542255Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.exec` с аргументами `path`, `args`, `env`.22562257[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.22582259Новое в версии 3.3: Добавлена поддержка указания *path* в качестве открытого файлового дескриптора для [`execve()`](https://python-all.ru/3.9/library/os.html#os.execve).22602261Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).22622263#### `os._exit(n)`22642265Завершает процесс с кодом *n*, без вызова обработчиков очистки, сброса буферов stdio и т.д.22662267> **Примечание**2268>2269> Стандартный способ завершения – `sys.exit(n)`. [`_exit()`](https://python-all.ru/3.9/library/os.html#os._exit) обычно следует использовать только в дочернем процессе после [`fork()`](https://python-all.ru/3.9/library/os.html#os.fork).22702271Определены следующие коды завершения, которые можно использовать с [`_exit()`](https://python-all.ru/3.9/library/os.html#os._exit), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.22722273> **Примечание**2274>2275> Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.22762277#### `os.EX_OK`22782279Код завершения, означающий, что ошибок не возникло.22802281[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.22822283#### `os.EX_USAGE`22842285Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.22862287[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.22882289#### `os.EX_DATAERR`22902291Код завершения, означающий, что входные данные были некорректны.22922293[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.22942295#### `os.EX_NOINPUT`22962297Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.22982299[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23002301#### `os.EX_NOUSER`23022303Код завершения, означающий, что указанный пользователь не существовал.23042305[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23062307#### `os.EX_NOHOST`23082309Код завершения, означающий, что указанный хост не существовал.23102311[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23122313#### `os.EX_UNAVAILABLE`23142315Код завершения, означающий, что требуемая служба недоступна.23162317[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23182319#### `os.EX_SOFTWARE`23202321Код завершения, означающий, что обнаружена внутренняя программная ошибка.23222323[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23242325#### `os.EX_OSERR`23262327Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.23282329[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23302331#### `os.EX_OSFILE`23322333Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.23342335[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23362337#### `os.EX_CANTCREAT`23382339Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.23402341[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23422343#### `os.EX_IOERR`23442345Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.23462347[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23482349#### `os.EX_TEMPFAIL`23502351Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.23522353[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23542355#### `os.EX_PROTOCOL`23562357Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.23582359[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23602361#### `os.EX_NOPERM`23622363Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).23642365[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23662367#### `os.EX_CONFIG`23682369Код выхода, указывающий на ошибку конфигурации.23702371[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23722373#### `os.EX_NOTFOUND`23742375Код выхода, означающий нечто вроде «запись не найдена».23762377[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23782379#### `os.fork()`23802381Порождает дочерний процесс. Возвращает `0` в дочернем процессе и идентификатор дочернего процесса в родительском. При возникновении ошибки возбуждается [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError).23822383Некоторые платформы, включая FreeBSD \<= 6.3 и Cygwin, имеют известные проблемы при использовании `fork()` из потока.23842385Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.fork` без аргументов.23862387Изменено в версии 3.8: Вызов `fork()` в подынтерпретаторе больше не поддерживается (возбуждается [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError)).23882389> **Предупреждение**2390>2391> См. [`ssl`](https://python-all.ru/3.9/library/ssl.html#module-ssl) для приложений, использующих модуль SSL с fork().23922393[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.23942395#### `os.forkpty()`23962397Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару `(pid, fd)`, где *pid* равен `0` в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, и *fd* – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.9/library/pty.html#module-pty). Если возникает ошибка, возбуждается [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError).23982399Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.forkpty` без аргументов.24002401Изменено в версии 3.8: Вызов `forkpty()` в подынтерпретаторе больше не поддерживается (возбуждается [`RuntimeError`](https://python-all.ru/3.9/library/exceptions.html#RuntimeError)).24022403[Доступность](https://python-all.ru/3.9/library/intro.html#availability): некоторые разновидности Unix.24042405#### `os.kill(pid, sig)`24062407Отправляет сигнал *sig* процессу *pid*. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле [`signal`](https://python-all.ru/3.9/library/signal.html#module-signal).24082409Windows: Сигналы [`signal.CTRL_C_EVENT`](https://python-all.ru/3.9/library/signal.html#signal.CTRL_C_EVENT) и [`signal.CTRL_BREAK_EVENT`](https://python-all.ru/3.9/library/signal.html#signal.CTRL_BREAK_EVENT) – это специальные сигналы, которые можно отправлять только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение *sig* приведет к безусловному завершению процесса через API TerminateProcess, а код возврата будет установлен в *sig*. Версия [`kill()`](https://python-all.ru/3.9/library/os.html#os.kill) для Windows дополнительно принимает дескрипторы процессов для завершения.24102411См. также [`signal.pthread_kill()`](https://python-all.ru/3.9/library/signal.html#signal.pthread_kill).24122413Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.kill` с аргументами `pid`, `sig`.24142415Новое в версии 3.2: Поддержка Windows.24162417#### `os.killpg(pgid, sig)`24182419Отправить сигнал *sig* группе процессов *pgid*.24202421Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.killpg` с аргументами `pgid`, `sig`.24222423[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.24242425#### `os.nice(increment)`24262427Добавить *increment* к «приоритету» процесса. Возвращает новый приоритет.24282429[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.24302431#### `os.pidfd_open(pid, flags=0)`24322433Возвращает файловый дескриптор, ссылающийся на процесс *pid*. Этот дескриптор можно использовать для управления процессом без состояний гонки и сигналов. Аргумент *flags* предусмотрен для будущих расширений; в настоящее время значения флагов не определены.24342435См. man-страницу *[pidfd\_open(2)](https://python-all.ru/3.9/library/os.html)* для подробностей.24362437[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 5.3+24382439Новое в версии 3.9.24402441#### `os.plock(op)`24422443Блокирует сегменты программы в памяти. Значение *op* (определённое в `<sys/lock.h>`) определяет, какие сегменты блокируются.24442445[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.24462447#### `os.popen(cmd, mode='r', buffering=-1)`24482449Открывает канал для связи с командой *cmd*. Возвращаемое значение – открытый файловый объект, подключённый к каналу, который можно читать или записывать в зависимости от того, является ли *mode* равным `'r'` (по умолчанию) или `'w'`. Аргумент *buffering* имеет тот же смысл, что соответствующий аргумент встроенной функции [`open()`](https://python-all.ru/3.9/library/functions.html#open). Возвращаемый файловый объект читает или записывает текстовые строки, а не байты.24502451Метод `close` возвращает [`None`](https://python-all.ru/3.9/library/constants.html#None), если подпроцесс завершился успешно, или код возврата подпроцесса в случае ошибки. В системах POSIX, если код возврата положительный, он представляет собой возвращаемое значение процесса, сдвинутое влево на один байт. Если код возврата отрицательный, процесс был завершён сигналом, соответствующим отрицательному значению кода возврата. (Например, возвращаемое значение может быть `- signal.SIGKILL`, если подпроцесс был убит.) В системах Windows возвращаемое значение содержит знаковый целочисленный код возврата дочернего процесса.24522453В Unix [`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования результата метода `close` (статуса выхода) в код выхода, если он не равен `None`. В Windows результат метода `close` непосредственно является кодом выхода (или `None`).24542455Это реализовано с помощью [`subprocess.Popen`](https://python-all.ru/3.9/library/subprocess.html#subprocess.Popen); обратитесь к документации этого класса для получения более мощных способов управления подпроцессами и общения с ними.24562457#### `os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)`24582459Обёртка для API библиотеки C `posix_spawn()` для использования из Python.24602461Большинству пользователей следует использовать [`subprocess.run()`](https://python-all.ru/3.9/library/subprocess.html#subprocess.run) вместо [`posix_spawn()`](https://python-all.ru/3.9/library/os.html#os.posix_spawn).24622463Позиционные аргументы *path*, *args* и *env* аналогичны [`execve()`](https://python-all.ru/3.9/library/os.html#os.execve).24642465Параметр *path* – это путь к исполняемому файлу. *path* должен содержать каталог. Используйте [`posix_spawnp()`](https://python-all.ru/3.9/library/os.html#os.posix_spawnp) для передачи исполняемого файла без каталога.24662467Аргумент *file\_actions* может быть последовательностью кортежей, описывающих действия над определёнными файловыми дескрипторами в дочернем процессе между шагами `fork()` и `exec()` реализации библиотеки C. Первый элемент каждого кортежа должен быть одним из трёх индикаторов типа, перечисленных ниже, описывающих остальные элементы кортежа:24682469#### `os.POSIX_SPAWN_OPEN`24702471(`os.POSIX_SPAWN_OPEN`, *fd*, *path*, *flags*, *mode*)24722473Выполняет `os.dup2(os.open(path, flags, mode), fd)`.24742475#### `os.POSIX_SPAWN_CLOSE`24762477(`os.POSIX_SPAWN_CLOSE`, *fd*)24782479Выполняет `os.close(fd)`.24802481#### `os.POSIX_SPAWN_DUP2`24822483(`os.POSIX_SPAWN_DUP2`, *fd*, *new\_fd*)24842485Выполняет `os.dup2(fd, new_fd)`.24862487Эти кортежи соответствуют вызовам API библиотеки C `posix_spawn_file_actions_addopen()`, `posix_spawn_file_actions_addclose()` и `posix_spawn_file_actions_adddup2()`, которые используются для подготовки самого вызова `posix_spawn()`.24882489Аргумент *setpgroup* устанавливает группу процессов дочернего процесса в указанное значение. Если указано значение 0, идентификатор группы процессов дочернего процесса будет равен его идентификатору процесса. Если значение *setpgroup* не задано, дочерний процесс наследует идентификатор группы процессов родительского процесса. Этот аргумент соответствует флагу `POSIX_SPAWN_SETPGROUP` библиотеки C.24902491Если аргумент *resetids* равен `True`, он сбрасывает эффективные UID и GID дочернего процесса в реальные UID и GID родительского процесса. Если аргумент равен `False`, дочерний процесс сохраняет эффективные UID и GID родителя. В любом случае, если на исполняемом файле установлены биты разрешений set-user-ID и set-group-ID, их действие переопределит настройку эффективных UID и GID. Этот аргумент соответствует флагу `POSIX_SPAWN_RESETIDS` библиотеки C.24922493Если аргумент *setsid* равен `True`, будет создан новый идентификатор сессии для *posix\_spawn*. *setsid* требует флаг `POSIX_SPAWN_SETSID` или `POSIX_SPAWN_SETSID_NP`. В противном случае возбуждается [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).24942495Аргумент *setsigmask* устанавливает маску сигналов в указанный набор. Если параметр не используется, дочерний процесс наследует маску сигналов родителя. Этот аргумент соответствует флагу `POSIX_SPAWN_SETSIGMASK` библиотеки C.24962497Аргумент *sigdef* сбрасывает диспозицию всех сигналов в указанном наборе. Этот аргумент соответствует флагу `POSIX_SPAWN_SETSIGDEF` библиотеки C.24982499Аргумент *scheduler* должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр [`sched_param`](https://python-all.ru/3.9/library/os.html#os.sched_param) с параметрами планировщика. Значение `None` на месте политики планировщика указывает, что она не предоставлена. Этот аргумент является комбинацией флагов `POSIX_SPAWN_SETSCHEDPARAM` и `POSIX_SPAWN_SETSCHEDULER` библиотеки C.25002501Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.posix_spawn` с аргументами `path`, `argv`, `env`.25022503Новое в версии 3.8.25042505[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.25062507#### `os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)`25082509Обёртка для API библиотеки C `posix_spawnp()` для использования из Python.25102511Аналогичен [`posix_spawn()`](https://python-all.ru/3.9/library/os.html#os.posix_spawn), за исключением того, что система ищет исполняемый файл *executable* в списке каталогов, заданных переменной окружения `PATH` (так же, как и для `execvp(3)`).25122513Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.posix_spawn` с аргументами `path`, `argv`, `env`.25142515Новое в версии 3.8.25162517[Доступность](https://python-all.ru/3.9/library/intro.html#availability): См. [`posix_spawn()`](https://python-all.ru/3.9/library/os.html#os.posix_spawn) документацию.25182519#### `os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)`25202521Регистрирует вызываемые объекты, которые будут выполнены при порождении нового дочернего процесса с помощью [`os.fork()`](https://python-all.ru/3.9/library/os.html#os.fork) или аналогичных API клонирования процессов. Параметры являются необязательными и только именованными. Каждый задаёт свою точку вызова.25222523- *before* – функция, вызываемая перед порождением дочернего процесса.2524- *after\_in\_parent* – функция, вызываемая из родительского процесса после порождения дочернего процесса.2525- *after\_in\_child* – функция, вызываемая из дочернего процесса.25262527Эти вызовы выполняются только в том случае, если ожидается возврат управления в интерпретатор Python. Типичный запуск [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess) не вызовет их, так как дочерний процесс не будет возвращаться в интерпретатор.25282529Функции, зарегистрированные для выполнения перед порождением, вызываются в обратном порядке регистрации. Функции, зарегистрированные для выполнения после порождения (как в родителе, так и в дочернем процессе), вызываются в порядке регистрации.25302531Обратите внимание, что вызовы `fork()`, выполняемые сторонним кодом на C, могут не вызывать эти функции, если только он явно не вызывает [`PyOS_BeforeFork()`](https://python-all.ru/3.9/c-api/sys.html#c.PyOS_BeforeFork), [`PyOS_AfterFork_Parent()`](https://python-all.ru/3.9/c-api/sys.html#c.PyOS_AfterFork_Parent) и [`PyOS_AfterFork_Child()`](https://python-all.ru/3.9/c-api/sys.html#c.PyOS_AfterFork_Child).25322533Невозможно отменить регистрацию функции.25342535[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.25362537Добавлено в версии 3.7.25382539#### `os.spawnl(mode, path, ...)`25402541#### `os.spawnle(mode, path, ..., env)`25422543#### `os.spawnlp(mode, file, ...)`25442545#### `os.spawnlpe(mode, file, ..., env)`25462547#### `os.spawnv(mode, path, args)`25482549#### `os.spawnve(mode, path, args, env)`25502551#### `os.spawnvp(mode, file, args)`25522553#### `os.spawnvpe(mode, file, args, env)`25542555Выполняет программу *path* в новом процессе.25562557(Обратите внимание, что модуль [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess) предоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно см. раздел [Замена старых функций модулем subprocess](https://python-all.ru/3.9/library/subprocess.html#subprocess-replacements).)25582559Если *mode* равен [`P_NOWAIT`](https://python-all.ru/3.9/library/os.html#os.P_NOWAIT), эта функция возвращает идентификатор нового процесса; если *mode* равен [`P_WAIT`](https://python-all.ru/3.9/library/os.html#os.P_WAIT), возвращает код выхода процесса, если он завершился нормально, или `-signal`, где *signal* – сигнал, который завершил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid).25602561Примечание: в VxWorks эта функция не возвращает `-signal`, когда новый процесс завершается. Вместо этого она вызывает исключение OSError.25622563Варианты «l» и «v» функций [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl) различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `spawnl*()`. Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр *args*. В любом случае, аргументы дочернего процесса должны начинаться с имени выполняемой команды.25642565Варианты, содержащие вторую «p» в конце ([`spawnlp()`](https://python-all.ru/3.9/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.9/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.9/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/3.9/library/os.html#os.spawnvpe)), используют переменную окружения `PATH` для поиска программы *file*. При замене окружения (с помощью одного из вариантов [`spawn*e`](https://python-all.ru/3.9/library/os.html#os.spawnl), обсуждаемых в следующем абзаце) новое окружение используется как источник переменной `PATH`. Другие варианты, [`spawnl()`](https://python-all.ru/3.9/library/os.html#os.spawnl), [`spawnle()`](https://python-all.ru/3.9/library/os.html#os.spawnle), [`spawnv()`](https://python-all.ru/3.9/library/os.html#os.spawnv) и [`spawnve()`](https://python-all.ru/3.9/library/os.html#os.spawnve), не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.25662567Для [`spawnle()`](https://python-all.ru/3.9/library/os.html#os.spawnle), [`spawnlpe()`](https://python-all.ru/3.9/library/os.html#os.spawnlpe), [`spawnve()`](https://python-all.ru/3.9/library/os.html#os.spawnve) и [`spawnvpe()`](https://python-all.ru/3.9/library/os.html#os.spawnvpe) (обратите внимание, все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`spawnl()`](https://python-all.ru/3.9/library/os.html#os.spawnl), [`spawnlp()`](https://python-all.ru/3.9/library/os.html#os.spawnlp), [`spawnv()`](https://python-all.ru/3.9/library/os.html#os.spawnv) и [`spawnvp()`](https://python-all.ru/3.9/library/os.html#os.spawnvp) заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре *env* должны быть строками; недопустимые ключи или значения приведут к ошибке функции с возвращаемым значением `127`.25682569В качестве примера следующие вызовы [`spawnlp()`](https://python-all.ru/3.9/library/os.html#os.spawnlp) и [`spawnvpe()`](https://python-all.ru/3.9/library/os.html#os.spawnvpe) эквивалентны:25702571```python2572import os2573os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')25742575L = ['cp', 'index.html', '/dev/null']2576os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)2577```25782579Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.spawn` с аргументами `mode`, `path`, `args`, `env`.25802581[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows. [`spawnlp()`](https://python-all.ru/3.9/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.9/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.9/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/3.9/library/os.html#os.spawnvpe) недоступны в Windows. [`spawnle()`](https://python-all.ru/3.9/library/os.html#os.spawnle) и [`spawnve()`](https://python-all.ru/3.9/library/os.html#os.spawnve) не являются потокобезопасными в Windows; рекомендуется использовать модуль [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess).25822583Изменено в версии 3.6: Принимает [объект, подобный пути](https://python-all.ru/3.9/glossary.html#term-path-like-object).25842585#### `os.P_NOWAIT`25862587#### `os.P_NOWAITO`25882589Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl). Если указано любое из этих значений, функции `spawn*()` возвращаются сразу после создания нового процесса, возвращая его идентификатор в качестве возвращаемого значения.25902591[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.25922593#### `os.P_WAIT`25942595Возможное значение параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl). Если указано это значение как *mode*, функции `spawn*()` не вернутся, пока новый процесс не завершится, и вернут код выхода процесса в случае успешного завершения, или `-signal`, если сигнал завершит процесс.25962597[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.25982599#### `os.P_DETACH`26002601#### `os.P_OVERLAY`26022603Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl). Они менее переносимы, чем перечисленные выше. [`P_DETACH`](https://python-all.ru/3.9/library/os.html#os.P_DETACH) аналогичен [`P_NOWAIT`](https://python-all.ru/3.9/library/os.html#os.P_NOWAIT), но новый процесс отсоединяется от консоли вызывающего процесса. Если используется [`P_OVERLAY`](https://python-all.ru/3.9/library/os.html#os.P_OVERLAY), текущий процесс будет заменён; функция [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl) не вернётся.26042605[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Windows.26062607#### `os.startfile(path[, operation])`26082609Запускает файл в связанном с ним приложении.26102611Если *operation* не указан или равен `'open'`, это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде **start** из интерактивной командной строки: файл открывается с помощью приложения, связанного с его расширением (если такое есть).26122613Если указана другая *operation*, она должна быть «глаголом команды» (command verb), определяющим, что делать с файлом. Распространённые глаголы, задокументированные Microsoft: `'print'` и `'edit'` (используются для файлов), а также `'explore'` и `'find'` (используются для каталогов).26142615[`startfile()`](https://python-all.ru/3.9/library/os.html#os.startfile) возвращается сразу после запуска соответствующего приложения. Невозможно дождаться закрытия приложения или получить его код возврата. Параметр *path* задаётся относительно текущего каталога. Если требуется использовать абсолютный путь, убедитесь, что первый символ не является косой чертой (`'/'`); в противном случае базовая функция Win32 `ShellExecute()` не сработает. Используйте функцию [`os.path.normpath()`](https://python-all.ru/3.9/library/os.path.html#os.path.normpath), чтобы путь был правильно закодирован для Win32.26162617Чтобы снизить накладные расходы на запуск интерпретатора, функция Win32 `ShellExecute()` не разрешается до первого вызова данной функции. Если функцию не удаётся разрешить, будет возбуждено [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).26182619Возбуждает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.startfile` с аргументами `path`, `operation`.26202621[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Windows.26222623#### `os.system(command)`26242625Выполняет команду (строку) в подпроцессе. Реализована вызовом стандартной функции C `system()` и имеет те же ограничения. Изменения [`sys.stdin`](https://python-all.ru/3.9/library/sys.html#sys.stdin) и т.д. не отражаются в окружении выполняемой команды. Если *command* генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет смысл возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.26262627В Unix возвращаемое значение – это статус выхода процесса, закодированный в формате, указанном для [`wait()`](https://python-all.ru/3.9/library/os.html#os.wait).26282629В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения *command*. Оболочка задаётся переменной окружения Windows `COMSPEC`: обычно это **cmd.exe**, которая возвращает статус выхода выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.26302631Модуль [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; предпочтительнее использовать этот модуль, а не данную функцию. Смотрите раздел [Замена старых функций модулем subprocess](https://python-all.ru/3.9/library/subprocess.html#subprocess-replacements) в документации [`subprocess`](https://python-all.ru/3.9/library/subprocess.html#module-subprocess), где приведены полезные рецепты.26322633В Unix [`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования результата (статуса выхода) в код возврата. В Windows результат напрямую является кодом возврата.26342635Вызывает [событие аудита](https://python-all.ru/3.9/library/sys.html#auditing) `os.system` с аргументом `command`.26362637[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.26382639#### `os.times()`26402641Возвращает текущие глобальные времена процесса. Возвращаемое значение – объект с пятью атрибутами:26422643- `user` – пользовательское время2644- `system` – системное время2645- `children_user` – пользовательское время всех дочерних процессов2646- `children_system` – системное время всех дочерних процессов2647- `elapsed` – прошедшее реальное время с фиксированной точки в прошлом26482649Для обратной совместимости этот объект также ведёт себя как кортеж из пяти элементов, содержащий `user`, `system`, `children_user`, `children_system` и `elapsed` в указанном порядке.26502651Смотрите страницу руководства Unix *[times(2)](https://python-all.ru/3.9/library/os.html)* и *[times(3)](https://python-all.ru/3.9/library/os.html)* на Unix или [GetProcessTimes в MSDN](https://python-all.ru/3.9/library/os.html) в Windows. В Windows известны только `user` и `system`; остальные атрибуты равны нулю.26522653[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix, Windows.26542655Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.26562657#### `os.wait()`26582659Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.26602661[`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.26622663[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.26642665> **См. также**2666>2667> [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid) можно использовать для ожидания завершения конкретного дочернего процесса; он имеет больше возможностей.26682669#### `os.waitid(idtype, id, options)`26702671Ожидание завершения одного или нескольких дочерних процессов. *idtype* может быть [`P_PID`](https://python-all.ru/3.9/library/os.html#os.P_PID), [`P_PGID`](https://python-all.ru/3.9/library/os.html#os.P_PGID), [`P_ALL`](https://python-all.ru/3.9/library/os.html#os.P_ALL) или [`P_PIDFD`](https://python-all.ru/3.9/library/os.html#os.P_PIDFD) на Linux. *id* задает pid, который нужно ожидать. *options* формируется с помощью побитового ИЛИ одного или нескольких из [`WEXITED`](https://python-all.ru/3.9/library/os.html#os.WEXITED), [`WSTOPPED`](https://python-all.ru/3.9/library/os.html#os.WSTOPPED) или [`WCONTINUED`](https://python-all.ru/3.9/library/os.html#os.WCONTINUED), и дополнительно может быть скомбинирован с помощью ИЛИ с [`WNOHANG`](https://python-all.ru/3.9/library/os.html#os.WNOHANG) или [`WNOWAIT`](https://python-all.ru/3.9/library/os.html#os.WNOWAIT). Возвращаемое значение – это объект, представляющий данные, содержащиеся в структуре `siginfo_t`, а именно: `si_pid`, `si_uid`, `si_signo`, `si_status`, `si_code` или `None`, если указан [`WNOHANG`](https://python-all.ru/3.9/library/os.html#os.WNOHANG) и отсутствуют дочерние процессы в состоянии, доступном для ожидания.26722673[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.26742675Новое в версии 3.3.26762677#### `os.P_PID`26782679#### `os.P_PGID`26802681#### `os.P_ALL`26822683Это возможные значения для *idtype* в [`waitid()`](https://python-all.ru/3.9/library/os.html#os.waitid). Они влияют на интерпретацию *id*.26842685[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.26862687Новое в версии 3.3.26882689#### `os.P_PIDFD`26902691Это специфичный для Linux *idtype*, который указывает, что *id* является файловым дескриптором, ссылающимся на процесс.26922693[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 5.4+26942695Новое в версии 3.9.26962697#### `os.WEXITED`26982699#### `os.WSTOPPED`27002701#### `os.WNOWAIT`27022703Флаги, которые можно использовать в *options* в [`waitid()`](https://python-all.ru/3.9/library/os.html#os.waitid) для указания ожидаемого сигнала дочернего процесса.27042705[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27062707Новое в версии 3.3.27082709#### `os.CLD_EXITED`27102711#### `os.CLD_KILLED`27122713#### `os.CLD_DUMPED`27142715#### `os.CLD_TRAPPED`27162717#### `os.CLD_STOPPED`27182719#### `os.CLD_CONTINUED`27202721Это возможные значения для `si_code` в результате, возвращаемом [`waitid()`](https://python-all.ru/3.9/library/os.html#os.waitid).27222723[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27242725Новое в версии 3.3.27262727Изменено в версии 3.9: Добавлены значения [`CLD_KILLED`](https://python-all.ru/3.9/library/os.html#os.CLD_KILLED) и [`CLD_STOPPED`](https://python-all.ru/3.9/library/os.html#os.CLD_STOPPED).27282729#### `os.waitpid(pid, options)`27302731Подробности этой функции различаются в Unix и Windows.27322733В Unix: ожидает завершения дочернего процесса, заданного идентификатором процесса *pid*, и возвращает кортеж, содержащий его идентификатор процесса и индикатор статуса завершения (закодированный как для [`wait()`](https://python-all.ru/3.9/library/os.html#os.wait)). Семантика вызова зависит от значения целочисленного параметра *options*, который должен быть `0` для нормальной работы.27342735Если *pid* больше `0`, [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid) запрашивает информацию о состоянии для этого конкретного процесса. Если *pid* равен `0`, запрос выполняется для состояния любого дочернего процесса в группе процессов текущего процесса. Если *pid* равен `-1`, запрос относится к любому дочернему процессу текущего процесса. Если *pid* меньше `-1`, запрашивается состояние для любого процесса в группе процессов `-pid` (абсолютное значение *pid*).27362737Возбуждается [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) со значением errno, когда системный вызов возвращает -1.27382739В Windows: ожидает завершения процесса, заданного дескриптором процесса *pid*, и возвращает кортеж, содержащий *pid* и его статус завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). *pid*, меньший или равный `0`, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного параметра *options* не влияет на результат. *pid* может относиться к любому процессу, чей идентификатор известен, не обязательно дочернему. Функции [`spawn*`](https://python-all.ru/3.9/library/os.html#os.spawnl), вызванные с [`P_NOWAIT`](https://python-all.ru/3.9/library/os.html#os.P_NOWAIT), возвращают подходящие дескрипторы процессов.27402741[`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.27422743Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.9/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.9/library/os.html) для обоснования).27442745#### `os.wait3(options)`27462747Аналогично [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid), за исключением того, что не передается аргумент идентификатора процесса, а возвращается кортеж из трех элементов, содержащий идентификатор дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Обратитесь к [`resource`](https://python-all.ru/3.9/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/3.9/library/resource.html#resource.getrusage) для получения подробной информации об использовании ресурсов. Аргумент опции такой же, как тот, что используется в [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid) и [`wait4()`](https://python-all.ru/3.9/library/os.html#os.wait4).27482749[`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.27502751[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27522753#### `os.wait4(pid, options)`27542755Аналогично [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid), за исключением того, что возвращается кортеж из трех элементов, содержащий идентификатор дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Обратитесь к [`resource`](https://python-all.ru/3.9/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/3.9/library/resource.html#resource.getrusage) для получения подробной информации об использовании ресурсов. Аргументы [`wait4()`](https://python-all.ru/3.9/library/os.html#os.wait4) такие же, как те, что передаются в [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid).27562757[`waitstatus_to_exitcode()`](https://python-all.ru/3.9/library/os.html#os.waitstatus_to_exitcode) можно использовать для преобразования статуса завершения в код завершения.27582759[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27602761#### `os.waitstatus_to_exitcode(status)`27622763Преобразует статус ожидания в код возврата.27642765В Unix:27662767- Если процесс завершился нормально (если `WIFEXITED(status)` истинно), возвращает статус выхода процесса (возвращает `WEXITSTATUS(status)`): результат больше или равен 0.2768- Если процесс был завершён сигналом (если `WIFSIGNALED(status)` истинно), возвращает `-signum`, где *signum* – это номер сигнала, который привёл к завершению процесса (возвращает `-WTERMSIG(status)`): результат меньше 0.2769- В противном случае возбуждает [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError).27702771В Windows возвращает *status*, сдвинутый вправо на 8 бит.27722773В Unix, если процесс трассируется или [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid) был вызван с опцией [`WUNTRACED`](https://python-all.ru/3.9/library/os.html#os.WUNTRACED), вызывающая сторона должна сначала проверить, истинно ли `WIFSTOPPED(status)`. Эта функция не должна вызываться, если `WIFSTOPPED(status)` истинно.27742775> **См. также**2776>2777> [`WIFEXITED()`](https://python-all.ru/3.9/library/os.html#os.WIFEXITED), [`WEXITSTATUS()`](https://python-all.ru/3.9/library/os.html#os.WEXITSTATUS), [`WIFSIGNALED()`](https://python-all.ru/3.9/library/os.html#os.WIFSIGNALED), [`WTERMSIG()`](https://python-all.ru/3.9/library/os.html#os.WTERMSIG), [`WIFSTOPPED()`](https://python-all.ru/3.9/library/os.html#os.WIFSTOPPED), [`WSTOPSIG()`](https://python-all.ru/3.9/library/os.html#os.WSTOPSIG) функции.27782779Новое в версии 3.9.27802781#### `os.WNOHANG`27822783Опция для [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid), позволяющая вернуть результат немедленно, если статус дочернего процесса недоступен. В этом случае функция возвращает `(0, 0)`.27842785[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27862787#### `os.WCONTINUED`27882789Эта опция позволяет сообщать о дочерних процессах, если они были возобновлены после остановки управления заданием с момента последнего сообщения их статуса.27902791[Доступность](https://python-all.ru/3.9/library/intro.html#availability): некоторые Unix-системы.27922793#### `os.WUNTRACED`27942795Этот параметр заставляет сообщать о дочерних процессах, если они были остановлены, но их текущее состояние ещё не было сообщено с момента остановки.27962797[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.27982799Следующие функции принимают код состояния процесса, возвращаемый [`system()`](https://python-all.ru/3.9/library/os.html#os.system), [`wait()`](https://python-all.ru/3.9/library/os.html#os.wait) или [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid), в качестве параметра. Они могут использоваться для определения статуса процесса.28002801#### `os.WCOREDUMP(status)`28022803Возвращает `True`, если для процесса был создан дамп ядра, в противном случае возвращает `False`.28042805Эту функцию следует использовать, только если [`WIFSIGNALED()`](https://python-all.ru/3.9/library/os.html#os.WIFSIGNALED) истинно.28062807[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28082809#### `os.WIFCONTINUED(status)`28102811Возвращает `True`, если остановленный дочерний процесс был возобновлён доставкой [`SIGCONT`](https://python-all.ru/3.9/library/signal.html#signal.SIGCONT) (если процесс был продолжен после остановки управления заданиями), в противном случае возвращает `False`.28122813См. опцию [`WCONTINUED`](https://python-all.ru/3.9/library/os.html#os.WCONTINUED).28142815[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28162817#### `os.WIFSTOPPED(status)`28182819Возвращает `True`, если процесс был остановлен доставкой сигнала, в противном случае возвращает `False`.28202821[`WIFSTOPPED()`](https://python-all.ru/3.9/library/os.html#os.WIFSTOPPED) возвращает `True` только если вызов [`waitpid()`](https://python-all.ru/3.9/library/os.html#os.waitpid) был выполнен с опцией [`WUNTRACED`](https://python-all.ru/3.9/library/os.html#os.WUNTRACED) или когда процесс трассируется (см. *[ptrace(2)](https://python-all.ru/3.9/library/os.html)*).28222823[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28242825#### `os.WIFSIGNALED(status)`28262827Возвращает `True`, если процесс был завершён сигналом, в противном случае возвращает `False`.28282829[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28302831#### `os.WIFEXITED(status)`28322833Возвращает `True`, если процесс завершился нормально, то есть вызовом `exit()` или `_exit()`, или возвратом из `main()`; в противном случае возвращает `False`.28342835[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28362837#### `os.WEXITSTATUS(status)`28382839Возвращает код завершения процесса.28402841Эту функцию следует использовать, только если [`WIFEXITED()`](https://python-all.ru/3.9/library/os.html#os.WIFEXITED) истинно.28422843[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28442845#### `os.WSTOPSIG(status)`28462847Возвращает сигнал, который вызвал остановку процесса.28482849Эту функцию следует использовать, только если [`WIFSTOPPED()`](https://python-all.ru/3.9/library/os.html#os.WIFSTOPPED) истинно.28502851[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28522853#### `os.WTERMSIG(status)`28542855Возвращает номер сигнала, который вызвал завершение процесса.28562857Эту функцию следует использовать, только если [`WIFSIGNALED()`](https://python-all.ru/3.9/library/os.html#os.WIFSIGNALED) истинно.28582859[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.28602861## Интерфейс к планировщику28622863Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.28642865Новое в версии 3.3.28662867Следующие политики планирования доступны, если они поддерживаются операционной системой.28682869#### `os.SCHED_OTHER`28702871Политика планирования по умолчанию.28722873#### `os.SCHED_BATCH`28742875Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.28762877#### `os.SCHED_IDLE`28782879Политика планирования для фоновых задач с очень низким приоритетом.28802881#### `os.SCHED_SPORADIC`28822883Политика планирования для спорадических серверных программ.28842885#### `os.SCHED_FIFO`28862887Политика планирования «первым пришёл, первым обслужен».28882889#### `os.SCHED_RR`28902891Циклическая политика планирования.28922893#### `os.SCHED_RESET_ON_FORK`28942895Этот флаг можно объединить с любой другой политикой планирования с помощью ИЛИ. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет дочернего процесса сбрасываются на значения по умолчанию.28962897#### `class os.sched_param(sched_priority)`28982899Этот класс представляет настраиваемые параметры планирования, используемые в [`sched_setparam()`](https://python-all.ru/3.9/library/os.html#os.sched_setparam), [`sched_setscheduler()`](https://python-all.ru/3.9/library/os.html#os.sched_setscheduler) и [`sched_getparam()`](https://python-all.ru/3.9/library/os.html#os.sched_getparam). Он неизменяем.29002901В настоящее время существует только один возможный параметр:29022903#### `sched_priority`29042905Приоритет планирования для политики планирования.29062907#### `os.sched_get_priority_min(policy)`29082909Возвращает минимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.29102911#### `os.sched_get_priority_max(policy)`29122913Возвращает максимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.29142915#### `os.sched_setscheduler(pid, policy, param)`29162917Устанавливает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. *policy* – одна из констант политик планирования, описанных выше. *param* – экземпляр [`sched_param`](https://python-all.ru/3.9/library/os.html#os.sched_param).29182919#### `os.sched_getscheduler(pid)`29202921Возвращает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.29222923#### `os.sched_setparam(pid, param)`29242925Устанавливает параметры планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. *param* – экземпляр [`sched_param`](https://python-all.ru/3.9/library/os.html#os.sched_param).29262927#### `os.sched_getparam(pid)`29282929Возвращает параметры планирования в виде экземпляра [`sched_param`](https://python-all.ru/3.9/library/os.html#os.sched_param) для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс.29302931#### `os.sched_rr_get_interval(pid)`29322933Возвращает квант времени (round-robin) в секундах для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс.29342935#### `os.sched_yield()`29362937Добровольно освобождает процессор.29382939#### `os.sched_setaffinity(pid, mask)`29402941Ограничивает процесс с PID *pid* (или текущий процесс, если ноль) набором процессоров. Параметр *mask* – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.29422943#### `os.sched_getaffinity(pid)`29442945Возвращает набор процессоров, к которым ограничен процесс с PID *pid* (или текущий процесс, если ноль).29462947## Различная системная информация29482949#### `os.confstr(name)`29502951Возвращает строковые значения системной конфигурации. *name* задаёт извлекаемое значение; это может быть строка – имя определённого системного значения; такие имена заданы в ряде стандартов (POSIX, Unix 95, Unix 98 и других). На некоторых платформах определены и дополнительные имена. Имена, известные хост-операционной системе, представлены в виде ключей словаря `confstr_names`. Для тех переменных конфигурации, которых нет в этом отображении, также допускается передавать целое число в качестве *name*.29522953Если значение конфигурации, указанное *name*, не определено, возвращается `None`.29542955Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/3.9/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `confstr_names`, возбуждается исключение [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.9/library/errno.html#errno.EINVAL) в качестве кода ошибки.29562957[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.29582959#### `os.confstr_names`29602961Словарь, отображающий имена, принимаемые [`confstr()`](https://python-all.ru/3.9/library/os.html#os.confstr), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.29622963[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.29642965#### `os.cpu_count()`29662967Возвращает количество процессоров в системе. Возвращает `None`, если не определено.29682969Это число не равно количеству процессоров, которые текущий процесс может использовать. Количество доступных процессоров можно получить с помощью `len(os.sched_getaffinity(0))`29702971Новое в версии 3.4.29722973#### `os.getloadavg()`29742975Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает исключение [`OSError`](https://python-all.ru/3.9/library/exceptions.html#OSError), если среднюю нагрузку получить не удалось.29762977[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.29782979#### `os.sysconf(name)`29802981Возвращает целочисленные значения системной конфигурации. Если значение конфигурации, указанное *name*, не определено, возвращается `-1`. Замечания относительно параметра *name* для [`confstr()`](https://python-all.ru/3.9/library/os.html#os.confstr) применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся `sysconf_names`.29822983[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.29842985#### `os.sysconf_names`29862987Словарь, отображающий имена, принимаемые [`sysconf()`](https://python-all.ru/3.9/library/os.html#os.sysconf), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.29882989[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Unix.29902991Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.29922993Операции более высокого уровня с именами путей определены в модуле [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).29942995#### `os.curdir`29962997Строковая константа, используемая операционной системой для обращения к текущему каталогу. Для Windows и POSIX это `'.'`. Также доступна через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).29982999#### `os.pardir`30003001Строковая константа, используемая операционной системой для обращения к родительскому каталогу. Для Windows и POSIX это `'..'`. Также доступна через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30023003#### `os.sep`30043005Символ, используемый операционной системой для разделения компонентов пути. Для POSIX это `'/'`, а для Windows – `'\\'`. Имейте в виду, что одного знания этого символа недостаточно для разбора или объединения путей – используйте [`os.path.split()`](https://python-all.ru/3.9/library/os.path.html#os.path.split) и [`os.path.join()`](https://python-all.ru/3.9/library/os.path.html#os.path.join), – но иногда это бывает полезно. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30063007#### `os.altsep`30083009Альтернативный символ, используемый операционной системой для разделения компонентов пути, или `None`, если существует только один символ-разделитель. В Windows, где `sep` – обратная косая черта, этот символ равен `'/'`. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30103011#### `os.extsep`30123013Символ, отделяющий основное имя файла от расширения; например, `'.'` в `os.py`. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30143015#### `os.pathsep`30163017Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в `PATH`), например `':'` для POSIX или `';'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30183019#### `os.defpath`30203021Путь поиска по умолчанию, используемый [`exec*p*`](https://python-all.ru/3.9/library/os.html#os.execl) и [`spawn*p*`](https://python-all.ru/3.9/library/os.html#os.spawnl), если в окружении нет ключа `'PATH'`. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30223023#### `os.linesep`30243025Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например `'\n'` для POSIX, или несколько символов, например `'\r\n'` для Windows. Не используйте *os.linesep* в качестве символа конца строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте одиночный `'\n'` на всех платформах.30263027#### `os.devnull`30283029Путь к нулевому устройству. Например: `'/dev/null'` для POSIX, `'nul'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.9/library/os.path.html#module-os.path).30303031#### `os.RTLD_LAZY`30323033#### `os.RTLD_NOW`30343035#### `os.RTLD_GLOBAL`30363037#### `os.RTLD_LOCAL`30383039#### `os.RTLD_NODELETE`30403041#### `os.RTLD_NOLOAD`30423043#### `os.RTLD_DEEPBIND`30443045Флаги для использования с функциями [`setdlopenflags()`](https://python-all.ru/3.9/library/sys.html#sys.setdlopenflags) и [`getdlopenflags()`](https://python-all.ru/3.9/library/sys.html#sys.getdlopenflags). Смотрите страницу руководства Unix *[dlopen(3)](https://python-all.ru/3.9/library/os.html)*, чтобы узнать значение различных флагов.30463047Новое в версии 3.3.30483049## Случайные числа30503051#### `os.getrandom(size, flags=0)`30523053Возвращает до *size* случайных байт. Функция может вернуть меньше байт, чем запрошено.30543055Эти байты можно использовать для начальной инициализации генераторов случайных чисел пользовательского пространства или для криптографических целей.30563057`getrandom()` полагается на энтропию, собранную от драйверов устройств и других источников шума окружения. Чрезмерное чтение больших объёмов данных негативно скажется на других пользователях устройств `/dev/random` и `/dev/urandom`.30583059Аргумент flags представляет собой битовую маску, которая может содержать ноль или более следующих значений, объединённых операцией OR: [`os.GRND_RANDOM`](https://python-all.ru/3.9/library/os.html#os.GRND_RANDOM) и [`GRND_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.GRND_NONBLOCK).30603061См. также [справочную страницу getrandom() в Linux](https://python-all.ru/3.9/library/os.html).30623063[Доступность](https://python-all.ru/3.9/library/intro.html#availability): Linux 3.17 и новее.30643065Новое в версии 3.6.30663067#### `os.urandom(size)`30683069Возвращает строку байтов длины *size* со случайными байтами, пригодными для использования в криптографии.30703071Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.30723073В Linux, если доступен системный вызов `getrandom()`, он используется в блокирующем режиме: блокировка до инициализации пула энтропии urandom (ядро собирает 128 бит энтропии). Обоснование см. в [**PEP 524**](https://python-all.ru/3.9/library/os.html). В Linux функция [`getrandom()`](https://python-all.ru/3.9/library/os.html#os.getrandom) может использоваться для получения случайных байтов в неблокирующем режиме (с помощью флага [`GRND_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.GRND_NONBLOCK)) или для опроса до инициализации пула энтропии urandom.30743075В Unix-подобных системах случайные байты читаются из устройства `/dev/urandom`. Если устройство `/dev/urandom` недоступно или нечитаемо, возбуждается исключение [`NotImplementedError`](https://python-all.ru/3.9/library/exceptions.html#NotImplementedError).30763077В Windows используется `CryptGenRandom()`.30783079> **См. также**3080>3081> Модуль [`secrets`](https://python-all.ru/3.9/library/secrets.html#module-secrets) предоставляет функции более высокого уровня. Для удобного интерфейса к генератору случайных чисел, предоставляемому платформой, см. [`random.SystemRandom`](https://python-all.ru/3.9/library/random.html#random.SystemRandom).30823083Изменено в версии 3.6.0: На Linux, `getrandom()` теперь используется в блокирующем режиме для повышения безопасности.30843085Изменено в версии 3.5.2: В Linux, если системный вызов `getrandom()` блокируется (пул энтропии urandom ещё не инициализирован), выполняется чтение из `/dev/urandom`.30863087Изменено в версии 3.5: В Linux 3.17 и новее теперь используется системный вызов `getrandom()`, когда он доступен. В OpenBSD 5.6 и новее теперь используется функция C `getentropy()`. Эти функции позволяют избежать использования внутреннего файлового дескриптора.30883089#### `os.GRND_NONBLOCK`30903091По умолчанию при чтении из `/dev/random` [`getrandom()`](https://python-all.ru/3.9/library/os.html#os.getrandom) блокируется, если нет доступных случайных байтов, а при чтении из `/dev/urandom` блокируется, если пул энтропии ещё не инициализирован.30923093Если установлен флаг [`GRND_NONBLOCK`](https://python-all.ru/3.9/library/os.html#os.GRND_NONBLOCK), то [`getrandom()`](https://python-all.ru/3.9/library/os.html#os.getrandom) не блокируется в этих случаях, а вместо этого немедленно возбуждает [`BlockingIOError`](https://python-all.ru/3.9/library/exceptions.html#BlockingIOError).30943095Новое в версии 3.6.30963097#### `os.GRND_RANDOM`30983099Если этот бит установлен, то случайные байты берутся из пула `/dev/random` вместо пула `/dev/urandom`.31003101Новое в версии 3.6.3102