os.md
1> **Источник:** https://python-all.ru/2.7/library/os.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 15.1. [`os`](https://python-all.ru/2.7/library/os.html#module-os) – Различные интерфейсы операционной системы89Этот модуль предоставляет переносимый способ использования функций, зависящих от операционной системы. Если нужно просто прочитать или записать файл, см. [`open()`](https://python-all.ru/2.7/library/functions.html#open); для работы с путями используйте модуль [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path); для чтения всех строк из всех файлов в командной строке – модуль [`fileinput`](https://python-all.ru/2.7/library/fileinput.html#module-fileinput). Для создания временных файлов и каталогов обратитесь к модулю [`tempfile`](https://python-all.ru/2.7/library/tempfile.html#module-tempfile), а для высокоуровневой работы с файлами и каталогами – к модулю [`shutil`](https://python-all.ru/2.7/library/shutil.html#module-shutil).1011Примечания о доступности этих функций:1213- Все встроенные модули Python, зависящие от операционной системы, устроены так, что при наличии одинаковой функциональности они используют один и тот же интерфейс; например, функция `os.stat(path)` возвращает информацию stat о *пути* в одном и том же формате (который, как вышло, берёт начало от интерфейса POSIX).14- Расширения, характерные для конкретной операционной системы, также доступны через модуль [`os`](https://python-all.ru/2.7/library/os.html#module-os), но их использование, конечно, угрожает переносимости.15- Примечание «Доступность: Unix» означает, что эта функция обычно встречается в системах Unix. Оно не утверждает о её существовании в конкретной операционной системе.16- Если не указано иное, все функции, для которых указано «Доступность: Unix», поддерживаются на Mac OS X, построенной на ядре Unix.1718> **Примечание**19>20> Все функции в этом модуле возбуждают [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError) в случае недопустимых или недоступных имен файлов и путей, или других аргументов, имеющих правильный тип, но не принимаемых операционной системой.2122#### `exception os.error`2324Псевдоним для встроенного исключения [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).2526#### `os.name`2728Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: `'posix'`, `'nt'`, `'os2'`, `'ce'`, `'java'`, `'riscos'`.2930> **См. также**31>32> [`sys.platform`](https://python-all.ru/2.7/library/sys.html#sys.platform) имеет более мелкую гранулярность. [`os.uname()`](https://python-all.ru/2.7/library/os.html#os.uname) предоставляет системно-зависимую информацию о версии.33>34> Модуль [`platform`](https://python-all.ru/2.7/library/platform.html#module-platform) предоставляет подробные проверки идентификации системы.3536## 15.1.1. Параметры процесса3738Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.3940#### `os.environ`4142[Отображение](https://python-all.ru/2.7/glossary.html#term-mapping), представляющее строковое окружение. Например, `environ['HOME']` – это путь к домашнему каталогу (на некоторых платформах), и эквивалентно `getenv("HOME")` в C.4344Это отображение захватывается при первом импорте модуля [`os`](https://python-all.ru/2.7/library/os.html#module-os), обычно во время запуска Python при обработке `site.py`. Изменения окружения, сделанные после этого момента, не отражаются в `os.environ`, за исключением изменений, выполненных путём прямого изменения `os.environ`.4546Если платформа поддерживает функцию [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv), это отображение можно использовать как для изменения окружения, так и для его запроса. [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) будет вызвана автоматически при изменении отображения.4748> **Примечание**49>50> Вызов [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) напрямую не изменяет `os.environ`, поэтому лучше изменять `os.environ`.5152> **Примечание**53>54> На некоторых платформах, включая FreeBSD и Mac OS X, установка `environ` может вызвать утечки памяти. Обратитесь к системной документации `putenv()`.5556Если [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) не указано, изменённая копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённое окружение.5758Если платформа поддерживает функцию [`unsetenv()`](https://python-all.ru/2.7/library/os.html#os.unsetenv), можно удалять элементы из этого отображения, чтобы сбросить переменные окружения. [`unsetenv()`](https://python-all.ru/2.7/library/os.html#os.unsetenv) будет вызвана автоматически при удалении элемента из `os.environ`, а также при вызове одного из методов `pop()` или `clear()`.5960Изменено в версии 2.6: Также удаляет переменные окружения при вызове `os.environ.clear()` и `os.environ.pop()`.6162#### `os.chdir(path)`6364#### `os.fchdir(fd)`6566#### `os.getcwd()`6768Эти функции описаны в [Files and Directories](https://python-all.ru/2.7/library/os.html#os-file-dir).6970#### `os.ctermid()`7172Возвращает имя файла, соответствующее управляющему терминалу процесса.7374Доступность: Unix.7576#### `os.getegid()`7778Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.7980Доступность: Unix.8182#### `os.geteuid()`8384Возвращает эффективный идентификатор пользователя текущего процесса.8586Доступность: Unix.8788#### `os.getgid()`8990Возвращает реальный идентификатор группы текущего процесса.9192Доступность: Unix.9394#### `os.getgroups()`9596Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.9798Доступность: Unix.99100> **Примечание**101>102> На Mac OS X поведение [`getgroups()`](https://python-all.ru/2.7/library/os.html#os.getgroups) несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания `10.5` или более ранней, [`getgroups()`](https://python-all.ru/2.7/library/os.html#os.getgroups) возвращает список эффективных идентификаторов групп, связанных с текущим процессом пользователя; этот список ограничен системным максимальным количеством записей, обычно 16, и может изменяться вызовами [`setgroups()`](https://python-all.ru/2.7/library/os.html#os.setgroups) при наличии соответствующих привилегий. Если интерпретатор собран с целевой версией развёртывания больше `10.5`, [`getgroups()`](https://python-all.ru/2.7/library/os.html#os.getgroups) возвращает текущий список доступа к группам для пользователя, связанного с эффективным идентификатором пользователя процесса; этот список может меняться в течение времени жизни процесса, на него не влияют вызовы [`setgroups()`](https://python-all.ru/2.7/library/os.html#os.setgroups), и его длина не ограничена 16. Значение целевой версии развёртывания, `MACOSX_DEPLOYMENT_TARGET`, можно получить с помощью [`sysconfig.get_config_var()`](https://python-all.ru/2.7/library/sysconfig.html#sysconfig.get_config_var).103104#### `os.initgroups(username, gid)`105106Вызывает системную функцию initgroups() для инициализации списка доступа к группам, который включает все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.107108Доступность: Unix.109110Новое в версии 2.7.111112#### `os.getlogin()`113114Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей удобнее использовать переменную окружения `LOGNAME`, чтобы узнать, кто пользователь, или `pwd.getpwuid(os.getuid())[0]`, чтобы получить имя входа для реального идентификатора пользователя процесса.115116Доступность: Unix.117118#### `os.getpgid(pid)`119120Возвращает идентификатор группы процессов для процесса с идентификатором *pid*. Если *pid* равен 0, возвращается идентификатор группы текущего процесса.121122Доступность: Unix.123124Новое в версии 2.3.125126#### `os.getpgrp()`127128Возвращает идентификатор текущей группы процессов.129130Доступность: Unix.131132#### `os.getpid()`133134Возвращает идентификатор текущего процесса.135136Доступность: Unix, Windows.137138#### `os.getppid()`139140Возвращает идентификатор родительского процесса.141142Доступность: Unix.143144#### `os.getresuid()`145146Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.147148Доступность: Unix.149150Новое в версии 2.7.151152#### `os.getresgid()`153154Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.155156Доступность: Unix.157158Новое в версии 2.7.159160#### `os.getuid()`161162Возвращает реальный идентификатор пользователя текущего процесса.163164Доступность: Unix.165166#### `os.getenv(varname[, value])`167168Возвращает значение переменной окружения *varname*, если она существует, или *value*, если нет. *value* по умолчанию равно `None`.169170Доступность: большинство разновидностей Unix, Windows.171172#### `os.putenv(varname, value)`173174Устанавливает переменную окружения с именем *varname* равной строке *value*. Такие изменения в окружении влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/2.7/library/os.html#os.system), [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen) или [`fork()`](https://python-all.ru/2.7/library/os.html#os.fork) и [`execv()`](https://python-all.ru/2.7/library/os.html#os.execv).175176Доступность: большинство разновидностей Unix, Windows.177178> **Примечание**179>180> На некоторых платформах, включая FreeBSD и Mac OS X, установка `environ` может вызвать утечки памяти. Обратитесь к системной документации по putenv.181182Когда [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) поддерживается, присваивания элементам `os.environ` автоматически преобразуются в соответствующие вызовы [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv); однако вызовы [`putenv()`](https://python-all.ru/2.7/library/os.html#os.putenv) не обновляют `os.environ`, поэтому на самом деле предпочтительнее присваивать значения элементам `os.environ`.183184#### `os.setegid(egid)`185186Устанавливает эффективный идентификатор группы текущего процесса.187188Доступность: Unix.189190#### `os.seteuid(euid)`191192Устанавливает эффективный идентификатор пользователя текущего процесса.193194Доступность: Unix.195196#### `os.setgid(gid)`197198Устанавливает идентификатор группы текущего процесса.199200Доступность: Unix.201202#### `os.setgroups(groups)`203204Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в *groups*. *groups* должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.205206Доступность: Unix.207208Новое в версии 2.2.209210> **Примечание**211>212> На Mac OS X длина *groups* не может превышать системного максимального количества эффективных идентификаторов групп, обычно 16. Обратитесь к документации [`getgroups()`](https://python-all.ru/2.7/library/os.html#os.getgroups) для случаев, когда может не возвращаться тот же список групп, который был установлен вызовом setgroups().213214#### `os.setpgrp()`215216Вызывает системный вызов `setpgrp()` или `setpgrp(0, 0)` в зависимости от того, какая версия реализована (если таковая имеется). За семантикой обращайтесь к руководству Unix.217218Доступность: Unix.219220#### `os.setpgid(pid, pgrp)`221222Вызывает системный вызов `setpgid()`, чтобы установить идентификатор группы процессов процесса с идентификатором *pid* равным группе процессов с идентификатором *pgrp*. За семантикой обращайтесь к руководству Unix.223224Доступность: Unix.225226#### `os.setregid(rgid, egid)`227228Устанавливает реальный и эффективный идентификаторы группы текущего процесса.229230Доступность: Unix.231232#### `os.setresgid(rgid, egid, sgid)`233234Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.235236Доступность: Unix.237238Новое в версии 2.7.239240#### `os.setresuid(ruid, euid, suid)`241242Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.243244Доступность: Unix.245246Новое в версии 2.7.247248#### `os.setreuid(ruid, euid)`249250Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.251252Доступность: Unix.253254#### `os.getsid(pid)`255256Вызывает системный вызов `getsid()`. За семантикой обращайтесь к руководству Unix.257258Доступность: Unix.259260Новое в версии 2.4.261262#### `os.setsid()`263264Вызывает системный вызов `setsid()`. За семантикой обращайтесь к руководству Unix.265266Доступность: Unix.267268#### `os.setuid(uid)`269270Устанавливает идентификатор пользователя текущего процесса.271272Доступность: Unix.273274#### `os.strerror(code)`275276Возвращает сообщение об ошибке, соответствующее коду ошибки в *code*. На платформах, где `strerror()` возвращает `NULL` при неизвестном номере ошибки, возбуждается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).277278Доступность: Unix, Windows.279280#### `os.umask(mask)`281282Устанавливает текущую числовую umask и возвращает предыдущую umask.283284Доступность: Unix, Windows.285286#### `os.uname()`287288Возвращает 5-кортеж, содержащий информацию, идентифицирующую текущую операционную систему. Кортеж содержит 5 строк: `(sysname, nodename, release, version, machine)`. Некоторые системы обрезают имя узла до 8 символов или до первого компонента; лучший способ получить имя хоста – [`socket.gethostname()`](https://python-all.ru/2.7/library/socket.html#socket.gethostname) или даже `socket.gethostbyaddr(socket.gethostname())`.289290Доступность: современные версии Unix.291292#### `os.unsetenv(varname)`293294Удаляет (отменяет) переменную окружения с именем *varname*. Такие изменения в окружении влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/2.7/library/os.html#os.system), [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen) или [`fork()`](https://python-all.ru/2.7/library/os.html#os.fork) и [`execv()`](https://python-all.ru/2.7/library/os.html#os.execv).295296Когда поддерживается [`unsetenv()`](https://python-all.ru/2.7/library/os.html#os.unsetenv), удаление элементов из `os.environ` автоматически преобразуется в соответствующий вызов [`unsetenv()`](https://python-all.ru/2.7/library/os.html#os.unsetenv); однако вызовы [`unsetenv()`](https://python-all.ru/2.7/library/os.html#os.unsetenv) не обновляют `os.environ`, поэтому на самом деле предпочтительнее удалять элементы из `os.environ`.297298Доступность: большинство разновидностей Unix, Windows.299300## 15.1.2. Создание объекта файла301302Эти функции создают новые файловые объекты. (См. также [`open()`](https://python-all.ru/2.7/library/functions.html#open).)303304#### `os.fdopen(fd[, mode[, bufsize]])`305306Возвращает открытый файловый объект, подключённый к файловому дескриптору *fd*. Аргументы *mode* и *bufsize* имеют тот же смысл, что и соответствующие аргументы встроенной функции [`open()`](https://python-all.ru/2.7/library/functions.html#open). Если [`fdopen()`](https://python-all.ru/2.7/library/os.html#os.fdopen) вызывает исключение, *fd* остаётся нетронутым (незакрытым).307308Доступность: Unix, Windows.309310Изменено в версии 2.3: Если указан, аргумент *mode* теперь должен начинаться с одной из букв `'r'`, `'w'` или `'a'`, иначе возникает исключение [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).311312Изменено в версии 2.5: В Unix, когда аргумент *mode* начинается с `'a'`, на файловом дескрипторе устанавливается флаг *O\_APPEND* (что реализация `fdopen()` уже делает на большинстве платформ).313314#### `os.popen(command[, mode[, bufsize]])`315316Открывает канал к команде *command* или от неё. Возвращаемое значение – открытый файловый объект, подключённый к каналу, который можно читать или записывать в зависимости от того, является ли *mode* значением `'r'` (по умолчанию) или `'w'`. Аргумент *bufsize* имеет тот же смысл, что и соответствующий аргумент встроенной функции [`open()`](https://python-all.ru/2.7/library/functions.html#open). Код завершения команды (закодированный в формате, указанном для [`wait()`](https://python-all.ru/2.7/library/os.html#os.wait)) доступен как возвращаемое значение метода [`close()`](https://python-all.ru/2.7/library/stdtypes.html#file.close) файлового объекта, за исключением того, что когда код завершения равен нулю (завершение без ошибок), возвращается `None`.317318Доступность: Unix, Windows.319320Устарело с версии 2.6: Эта функция устарела. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess). Обратите особое внимание на раздел [Замена старых функций модулем subprocess](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements).321322Изменено в версии 2.0: Эта функция работала ненадёжно в Windows в более ранних версиях Python. Это было связано с использованием функции `_popen()` из библиотек, поставляемых с Windows. В более новых версиях Python не используется неработающая реализация из библиотек Windows.323324#### `os.tmpfile()`325326Возвращает новый файловый объект, открытый в режиме обновления (`w+b`). Файл не имеет связанных с ним записей каталога и будет автоматически удалён, когда для него не останется файловых дескрипторов.327328Доступность: Unix, Windows.329330Существует несколько различных функций `popen*()`, которые предоставляют слегка разные способы создания подпроцессов.331332Устарело с версии 2.6: Все функции `popen*()` устарели. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess).333334Для каждого из вариантов `popen*()`, если указан *bufsize*, он задаёт размер буфера для каналов ввода-вывода. *mode*, если указан, должен быть строкой `'b'` или `'t'`; в Windows это необходимо для определения того, должны ли файловые объекты открываться в двоичном или текстовом режиме. Значение по умолчанию для *mode* – `'t'`.335336Кроме того, для каждого из этих вариантов в Unix *cmd* может быть последовательностью, и в этом случае аргументы будут передаваться непосредственно программе без участия оболочки (как в [`os.spawnv()`](https://python-all.ru/2.7/library/os.html#os.spawnv)). Если *cmd* является строкой, она будет передана оболочке (как в [`os.system()`](https://python-all.ru/2.7/library/os.html#os.system)).337338Эти методы не позволяют получить код завершения дочерних процессов. Единственный способ управлять потоками ввода и вывода, а также получать коды возврата – использовать модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess); эти функции доступны только в Unix.339340Обсуждение возможных условий взаимоблокировки, связанных с использованием этих функций, см. в разделе [Проблемы управления потоком](https://python-all.ru/2.7/library/popen2.html#popen2-flow-control).341342#### `os.popen2(cmd[, mode[, bufsize]])`343344Выполняет *cmd* как подпроцесс и возвращает файловые объекты `(child_stdin, child_stdout)`.345346Устарело с версии 2.6: Эта функция устарела. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess). Особенно обратите внимание на раздел [Замена старых функций модулем subprocess](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements).347348Доступность: Unix, Windows.349350Новое в версии 2.0.351352#### `os.popen3(cmd[, mode[, bufsize]])`353354Выполняет *cmd* как подпроцесс и возвращает файловые объекты `(child_stdin, child_stdout, child_stderr)`.355356Устарело с версии 2.6: Эта функция устарела. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess). Особенно обратите внимание на раздел [Замена старых функций модулем subprocess](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements).357358Доступность: Unix, Windows.359360Новое в версии 2.0.361362#### `os.popen4(cmd[, mode[, bufsize]])`363364Выполняет *cmd* как подпроцесс и возвращает файловые объекты `(child_stdin, child_stdout_and_stderr)`.365366Устарело с версии 2.6: Эта функция устарела. Используйте модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess). Особенно обратите внимание на раздел [Замена старых функций модулем subprocess](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements).367368Доступность: Unix, Windows.369370Новое в версии 2.0.371372(Обратите внимание, что именование `child_stdin, child_stdout, and child_stderr` ведётся с точки зрения дочернего процесса, поэтому *child\_stdin* – это стандартный ввод дочернего процесса.)373374Эта функциональность также доступна в модуле [`popen2`](https://python-all.ru/2.7/library/popen2.html#module-popen2) через одноимённые функции, но порядок возвращаемых значений у них отличается.375376## 15.1.3. Операции с файловыми дескрипторами377378Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.379380Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.381382Метод [`fileno()`](https://python-all.ru/2.7/library/stdtypes.html#file.fileno) можно использовать для получения файлового дескриптора, связанного с файловым объектом, когда это необходимо. Обратите внимание, что прямое использование файлового дескриптора обходит методы файлового объекта и игнорирует такие аспекты, как внутренняя буферизация данных.383384#### `os.close(fd)`385386Закрывает файловый дескриптор *fd*.387388Доступность: Unix, Windows.389390> **Примечание**391>392> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/2.7/library/os.html#os.open) или [`pipe()`](https://python-all.ru/2.7/library/os.html#os.pipe). Чтобы закрыть «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/2.7/library/functions.html#open) или [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen) или [`fdopen()`](https://python-all.ru/2.7/library/os.html#os.fdopen), используйте его метод [`close()`](https://python-all.ru/2.7/library/io.html#io.IOBase.close).393394#### `os.closerange(fd_low, fd_high)`395396Закрывает все файловые дескрипторы от *fd\_low* (включительно) до *fd\_high* (исключительно), игнорируя ошибки. Эквивалентно:397398```python399for fd in xrange(fd_low, fd_high):400 try:401 os.close(fd)402 except OSError:403 pass404```405406Доступность: Unix, Windows.407408Новое в версии 2.6.409410#### `os.dup(fd)`411412Возвращает дубликат файлового дескриптора *fd*.413414Доступность: Unix, Windows.415416#### `os.dup2(fd, fd2)`417418Дублирует файловый дескриптор *fd* в *fd2*, закрывая последний дескриптор сначала, если необходимо.419420Доступность: Unix, Windows.421422#### `os.fchmod(fd, mode)`423424Изменяет режим файла, заданного *fd*, на числовой *mode*. Список возможных значений *mode* см. в документации на [`chmod()`](https://python-all.ru/2.7/library/os.html#os.chmod).425426Доступность: Unix.427428Новое в версии 2.6.429430#### `os.fchown(fd, uid, gid)`431432Изменяет идентификаторы владельца и группы файла, заданного дескриптором *fd*, на числовые *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1.433434Доступность: Unix.435436Новое в версии 2.6.437438#### `os.fdatasync(fd)`439440Принудительная запись файла с файловым дескриптором *fd* на диск. Не принуждает к обновлению метаданных.441442Доступность: Unix.443444> **Примечание**445>446> Эта функция недоступна в MacOS.447448#### `os.fpathconf(fd, name)`449450Возвращает информацию о системной конфигурации, относящуюся к открытому файлу. *name* задаёт значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и другие). Некоторые платформы определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для *name*.451452Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError) с [`errno.EINVAL`](https://python-all.ru/2.7/library/errno.html#errno.EINVAL) в качестве кода ошибки.453454Доступность: Unix.455456#### `os.fstat(fd)`457458Возвращает статус для файлового дескриптора *fd*, аналогично [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat).459460Доступность: Unix, Windows.461462#### `os.fstatvfs(fd)`463464Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором *fd*, аналогично [`statvfs()`](https://python-all.ru/2.7/library/statvfs.html#module-statvfs).465466Доступность: Unix.467468#### `os.fsync(fd)`469470Принудительно записывает файл с файловым дескриптором *fd* на диск. В Unix вызывает нативную функцию `fsync()`; в Windows – функцию MS `_commit()`.471472Если исходным является объект Python-файла *f*, сначала выполните `f.flush()`, а затем `os.fsync(f.fileno())`, чтобы все внутренние буферы, связанные с *f*, были записаны на диск.473474Доступность: Unix и Windows, начиная с версии 2.2.3.475476#### `os.ftruncate(fd, length)`477478Усекает файл, соответствующий файловому дескриптору *fd*, так, чтобы его размер составлял не более *length* байт.479480Доступность: Unix.481482#### `os.isatty(fd)`483484Возвращает `True`, если файловый дескриптор *fd* открыт и подключён к устройству типа tty, иначе `False`.485486#### `os.lseek(fd, pos, how)`487488Устанавливает текущую позицию файлового дескриптора *fd* в позицию *pos*, с заданным параметром *how*: [`SEEK_SET`](https://python-all.ru/2.7/library/os.html#os.SEEK_SET) или `0` – установить позицию относительно начала файла; [`SEEK_CUR`](https://python-all.ru/2.7/library/os.html#os.SEEK_CUR) или `1` – относительно текущей позиции; [`SEEK_END`](https://python-all.ru/2.7/library/os.html#os.SEEK_END) или `2` – относительно конца файла. Возвращает новую позицию курсора в байтах от начала.489490Доступность: Unix, Windows.491492#### `os.SEEK_SET`493494#### `os.SEEK_CUR`495496#### `os.SEEK_END`497498Параметры функции [`lseek()`](https://python-all.ru/2.7/library/os.html#os.lseek). Их значения – 0, 1 и 2 соответственно.499500Доступность: Windows, Unix.501502Новое в версии 2.5.503504#### `os.open(file, flags[, mode])`505506Открывает файл *file* и устанавливает различные флаги в соответствии с *flags* и, возможно, его режим в соответствии с *mode*. Режим по умолчанию *mode* – `0777` (восьмеричное), при этом сначала маскируется текущее значение umask. Возвращает файловый дескриптор для вновь открытого файла.507508Описание значений флагов и режимов см. в документации по среде выполнения C; константы флагов (например, [`O_RDONLY`](https://python-all.ru/2.7/library/os.html#os.O_RDONLY) и [`O_WRONLY`](https://python-all.ru/2.7/library/os.html#os.O_WRONLY)) также определены в этом модуле (см. [константы флагов open()](https://python-all.ru/2.7/library/os.html#open-constants)). В частности, в Windows для открытия файлов в бинарном режиме необходимо добавить [`O_BINARY`](https://python-all.ru/2.7/library/os.html#os.O_BINARY).509510Доступность: Unix, Windows.511512> **Примечание**513>514> Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования применяйте встроенную функцию [`open()`](https://python-all.ru/2.7/library/functions.html#open), которая возвращает «файловый объект» с методами [`read()`](https://python-all.ru/2.7/library/stdtypes.html#file.read) и [`write()`](https://python-all.ru/2.7/library/stdtypes.html#file.write) (и многими другими). Чтобы обернуть файловый дескриптор в «файловый объект», используйте [`fdopen()`](https://python-all.ru/2.7/library/os.html#os.fdopen).515516#### `os.openpty()`517518Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов `(master, slave)` для pty и tty соответственно. Для (чуть) более переносимого подхода используйте модуль [`pty`](https://python-all.ru/2.7/library/pty.html#module-pty).519520Доступность: некоторые разновидности Unix.521522#### `os.pipe()`523524Создаёт канал. Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно.525526Доступность: Unix, Windows.527528#### `os.read(fd, n)`529530Читает не более *n* байтов из файлового дескриптора *fd*. Возвращает строку, содержащую прочитанные байты. Если достигнут конец файла, на который ссылается *fd*, возвращается пустая строка.531532Доступность: Unix, Windows.533534> **Примечание**535>536> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/2.7/library/os.html#os.open) или [`pipe()`](https://python-all.ru/2.7/library/os.html#os.pipe). Для чтения «файлового объекта», возвращаемого встроенной функцией [`open()`](https://python-all.ru/2.7/library/functions.html#open) или [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen), [`fdopen()`](https://python-all.ru/2.7/library/os.html#os.fdopen), [`sys.stdin`](https://python-all.ru/2.7/library/sys.html#sys.stdin), используйте его методы [`read()`](https://python-all.ru/2.7/library/stdtypes.html#file.read) или [`readline()`](https://python-all.ru/2.7/library/stdtypes.html#file.readline).537538#### `os.tcgetpgrp(fd)`539540Возвращает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/2.7/library/os.html#os.open)).541542Доступность: Unix.543544#### `os.tcsetpgrp(fd, pg)`545546Устанавливает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/2.7/library/os.html#os.open)), в *pg*.547548Доступность: Unix.549550#### `os.ttyname(fd)`551552Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором *fd*. Если *fd* не связан с терминальным устройством, возбуждается исключение.553554Доступность: Unix.555556#### `os.write(fd, str)`557558Записывает строку *str* в файловый дескриптор *fd*. Возвращает количество фактически записанных байтов.559560Доступность: Unix, Windows.561562> **Примечание**563>564> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/2.7/library/os.html#os.open) или [`pipe()`](https://python-all.ru/2.7/library/os.html#os.pipe). Чтобы записать «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/2.7/library/functions.html#open) или [`popen()`](https://python-all.ru/2.7/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/2.7/library/os.html#os.fdopen), или [`sys.stdout`](https://python-all.ru/2.7/library/sys.html#sys.stdout), или [`sys.stderr`](https://python-all.ru/2.7/library/sys.html#sys.stderr), используйте его метод [`write()`](https://python-all.ru/2.7/library/stdtypes.html#file.write).565566### 15.1.3.1. `open()` константы флагов567568Следующие константы являются возможными значениями параметра *flags* функции [`open()`](https://python-all.ru/2.7/library/os.html#os.open). Их можно комбинировать с помощью побитового оператора OR `|`. Некоторые из них доступны не на всех платформах. Описания их доступности и использования см. на странице руководства *open(2)* в Unix или в [MSDN](https://python-all.ru/2.7/library/os.html) в Windows.569570#### `os.O_RDONLY`571572#### `os.O_WRONLY`573574#### `os.O_RDWR`575576#### `os.O_APPEND`577578#### `os.O_CREAT`579580#### `os.O_EXCL`581582#### `os.O_TRUNC`583584Приведённые выше константы доступны в Unix и Windows.585586#### `os.O_DSYNC`587588#### `os.O_RSYNC`589590#### `os.O_SYNC`591592#### `os.O_NDELAY`593594#### `os.O_NONBLOCK`595596#### `os.O_NOCTTY`597598Приведённые выше константы доступны только в Unix.599600#### `os.O_BINARY`601602#### `os.O_NOINHERIT`603604#### `os.O_SHORT_LIVED`605606#### `os.O_TEMPORARY`607608#### `os.O_RANDOM`609610#### `os.O_SEQUENTIAL`611612#### `os.O_TEXT`613614Приведённые выше константы доступны только в Windows.615616#### `os.O_ASYNC`617618#### `os.O_DIRECT`619620#### `os.O_DIRECTORY`621622#### `os.O_NOFOLLOW`623624#### `os.O_NOATIME`625626#### `os.O_SHLOCK`627628#### `os.O_EXLOCK`629630Указанные выше константы являются расширениями и отсутствуют, если они не определены библиотекой C.631632## 15.1.4. Файлы и каталоги633634#### `os.access(path, mode)`635636Использует реальные uid/gid для проверки доступа к *path*. Обратите внимание, что большинство операций используют эффективные uid/gid, поэтому эта функция может применяться в среде suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к *path*. *mode* должен быть [`F_OK`](https://python-all.ru/2.7/library/os.html#os.F_OK) для проверки существования *path*, или может быть логическим ИЛИ одного или нескольких из [`R_OK`](https://python-all.ru/2.7/library/os.html#os.R_OK), [`W_OK`](https://python-all.ru/2.7/library/os.html#os.W_OK) и [`X_OK`](https://python-all.ru/2.7/library/os.html#os.X_OK) для проверки прав. Возвращает [`True`](https://python-all.ru/2.7/library/constants.html#True), если доступ разрешён, [`False`](https://python-all.ru/2.7/library/constants.html#False) – если нет. См. man-страницу Unix *access(2)* для получения дополнительной информации.637638Доступность: Unix, Windows.639640> **Примечание**641>642> Использование [`access()`](https://python-all.ru/2.7/library/os.html#os.access) для проверки, авторизован ли пользователь, например, на открытие файла, перед фактическим открытием с помощью [`open()`](https://python-all.ru/2.7/library/functions.html#open), создаёт брешь в безопасности, поскольку пользователь может воспользоваться коротким временным промежутком между проверкой и открытием файла для его изменения. Предпочтительнее использовать подход [EAFP](https://python-all.ru/2.7/glossary.html#term-eafp). Например:643>644> ```python645> if os.access("myfile", os.R_OK):646> with open("myfile") as fp:647> return fp.read()648> return "some default data"649> ```650>651> лучше написать так:652>653> ```python654> try:655> fp = open("myfile")656> except IOError as e:657> if e.errno == errno.EACCES:658> return "some default data"659> # Не ошибка прав доступа.660> raise661> else:662> with fp:663> return fp.read()664> ```665666> **Примечание**667>668> Операции ввода-вывода могут завершиться ошибкой, даже если [`access()`](https://python-all.ru/2.7/library/os.html#os.access) указывает, что они должны выполниться успешно, особенно для операций в сетевых файловых системах, которые могут иметь семантику прав доступа, выходящую за рамки обычной POSIX-модели битов разрешений.669670#### `os.F_OK`671672Значение, которое нужно передать в качестве параметра *mode* функции [`access()`](https://python-all.ru/2.7/library/os.html#os.access) для проверки существования *path*.673674#### `os.R_OK`675676Значение, которое нужно включить в параметр *mode* функции [`access()`](https://python-all.ru/2.7/library/os.html#os.access) для проверки читаемости *path*.677678#### `os.W_OK`679680Значение, которое нужно включить в параметр *mode* функции [`access()`](https://python-all.ru/2.7/library/os.html#os.access) для проверки возможности записи в *path*.681682#### `os.X_OK`683684Значение, которое нужно включить в параметр *mode* функции [`access()`](https://python-all.ru/2.7/library/os.html#os.access), чтобы определить, можно ли выполнить *path*.685686#### `os.chdir(path)`687688Изменяет текущий рабочий каталог на *path*.689690Доступность: Unix, Windows.691692#### `os.fchdir(fd)`693694Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором *fd*. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл.695696Доступность: Unix.697698Новое в версии 2.3.699700#### `os.getcwd()`701702Возвращает строку, представляющую текущую рабочую директорию.703704Доступность: Unix, Windows.705706#### `os.getcwdu()`707708Возвращает объект Unicode, представляющий текущий рабочий каталог.709710Доступность: Unix, Windows.711712Новое в версии 2.3.713714#### `os.chflags(path, flags)`715716Устанавливает флаги *path* в числовое значение *flags*. *flags* может принимать комбинацию (побитовое ИЛИ) следующих значений (определённых в модуле [`stat`](https://python-all.ru/2.7/library/stat.html#module-stat)):717718- [`stat.UF_NODUMP`](https://python-all.ru/2.7/library/stat.html#stat.UF_NODUMP)719- [`stat.UF_IMMUTABLE`](https://python-all.ru/2.7/library/stat.html#stat.UF_IMMUTABLE)720- [`stat.UF_APPEND`](https://python-all.ru/2.7/library/stat.html#stat.UF_APPEND)721- [`stat.UF_OPAQUE`](https://python-all.ru/2.7/library/stat.html#stat.UF_OPAQUE)722- [`stat.UF_NOUNLINK`](https://python-all.ru/2.7/library/stat.html#stat.UF_NOUNLINK)723- [`stat.UF_COMPRESSED`](https://python-all.ru/2.7/library/stat.html#stat.UF_COMPRESSED)724- [`stat.UF_HIDDEN`](https://python-all.ru/2.7/library/stat.html#stat.UF_HIDDEN)725- [`stat.SF_ARCHIVED`](https://python-all.ru/2.7/library/stat.html#stat.SF_ARCHIVED)726- [`stat.SF_IMMUTABLE`](https://python-all.ru/2.7/library/stat.html#stat.SF_IMMUTABLE)727- [`stat.SF_APPEND`](https://python-all.ru/2.7/library/stat.html#stat.SF_APPEND)728- [`stat.SF_NOUNLINK`](https://python-all.ru/2.7/library/stat.html#stat.SF_NOUNLINK)729- [`stat.SF_SNAPSHOT`](https://python-all.ru/2.7/library/stat.html#stat.SF_SNAPSHOT)730731Доступность: Unix.732733Новое в версии 2.6.734735#### `os.chroot(path)`736737Изменяет корневую директорию текущего процесса на *path*. Доступность: Unix.738739Новое в версии 2.2.740741#### `os.chmod(path, mode)`742743Изменяет режим *path* на числовое значение *mode*. *mode* может принимать одно из следующих значений (определённых в модуле [`stat`](https://python-all.ru/2.7/library/stat.html#module-stat)) или их побитовые комбинации:744745- [`stat.S_ISUID`](https://python-all.ru/2.7/library/stat.html#stat.S_ISUID)746- [`stat.S_ISGID`](https://python-all.ru/2.7/library/stat.html#stat.S_ISGID)747- [`stat.S_ENFMT`](https://python-all.ru/2.7/library/stat.html#stat.S_ENFMT)748- [`stat.S_ISVTX`](https://python-all.ru/2.7/library/stat.html#stat.S_ISVTX)749- [`stat.S_IREAD`](https://python-all.ru/2.7/library/stat.html#stat.S_IREAD)750- [`stat.S_IWRITE`](https://python-all.ru/2.7/library/stat.html#stat.S_IWRITE)751- [`stat.S_IEXEC`](https://python-all.ru/2.7/library/stat.html#stat.S_IEXEC)752- [`stat.S_IRWXU`](https://python-all.ru/2.7/library/stat.html#stat.S_IRWXU)753- [`stat.S_IRUSR`](https://python-all.ru/2.7/library/stat.html#stat.S_IRUSR)754- [`stat.S_IWUSR`](https://python-all.ru/2.7/library/stat.html#stat.S_IWUSR)755- [`stat.S_IXUSR`](https://python-all.ru/2.7/library/stat.html#stat.S_IXUSR)756- [`stat.S_IRWXG`](https://python-all.ru/2.7/library/stat.html#stat.S_IRWXG)757- [`stat.S_IRGRP`](https://python-all.ru/2.7/library/stat.html#stat.S_IRGRP)758- [`stat.S_IWGRP`](https://python-all.ru/2.7/library/stat.html#stat.S_IWGRP)759- [`stat.S_IXGRP`](https://python-all.ru/2.7/library/stat.html#stat.S_IXGRP)760- [`stat.S_IRWXO`](https://python-all.ru/2.7/library/stat.html#stat.S_IRWXO)761- [`stat.S_IROTH`](https://python-all.ru/2.7/library/stat.html#stat.S_IROTH)762- [`stat.S_IWOTH`](https://python-all.ru/2.7/library/stat.html#stat.S_IWOTH)763- [`stat.S_IXOTH`](https://python-all.ru/2.7/library/stat.html#stat.S_IXOTH)764765Доступность: Unix, Windows.766767> **Примечание**768>769> Хотя Windows поддерживает [`chmod()`](https://python-all.ru/2.7/library/os.html#os.chmod), с его помощью можно установить только флаг «только для чтения» файла (через константы `stat.S_IWRITE` и `stat.S_IREAD` или соответствующее целочисленное значение). Все остальные биты игнорируются.770771#### `os.chown(path, uid, gid)`772773Изменяет владельца и группу *path* на числовые *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, задайте для него значение -1.774775Доступность: Unix.776777#### `os.lchflags(path, flags)`778779Устанавливает флаги *path* в числовое значение *flags*, как [`chflags()`](https://python-all.ru/2.7/library/os.html#os.chflags), но не переходит по символическим ссылкам.780781Доступность: Unix.782783Новое в версии 2.6.784785#### `os.lchmod(path, mode)`786787Изменяет режим *path* на числовое значение *mode*. Если путь является символической ссылкой, это изменяет саму ссылку, а не целевой объект. Описание возможных значений *mode* см. в документации [`chmod()`](https://python-all.ru/2.7/library/os.html#os.chmod).788789Доступность: Unix.790791Новое в версии 2.6.792793#### `os.lchown(path, uid, gid)`794795Изменяет владельца и группу *path* на числовые *uid* и *gid*. Эта функция не переходит по символическим ссылкам.796797Доступность: Unix.798799Новое в версии 2.3.800801#### `os.link(source, link_name)`802803Создаёт жёсткую ссылку, указывающую на *source*, с именем *link\_name*.804805Доступность: Unix.806807#### `os.listdir(path)`808809Возвращает список, содержащий имена элементов в каталоге, заданном *path*. Список находится в произвольном порядке. Он не включает специальные элементы `'.'` и `'..'`, даже если они присутствуют в каталоге.810811Доступность: Unix, Windows.812813Изменено в версии 2.3: В Windows NT/2k/XP и Unix, если *path* является объектом Unicode, результатом будет список объектов Unicode. Нераскодируемые имена файлов по-прежнему возвращаются как строковые объекты.814815#### `os.lstat(path)`816817Выполняет эквивалент системного вызова `lstat()` для заданного пути. Похожа на [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat), но не переходит по символическим ссылкам. На платформах, не поддерживающих символические ссылки, является псевдонимом для [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat).818819#### `os.mkfifo(path[, mode])`820821Создаёт FIFO (именованный канал) с именем *path* с числовым режимом *mode*. Значение по умолчанию для *mode* – `0666` (восьмеричное). Текущее значение umask сначала вычитается из режима.822823Доступность: Unix.824825FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока их не удалят (например, с помощью [`os.unlink()`](https://python-all.ru/2.7/library/os.html#os.unlink)). Как правило, FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, что [`mkfifo()`](https://python-all.ru/2.7/library/os.html#os.mkfifo) не открывает FIFO – он только создаёт точку встречи.826827#### `os.mknod(filename[, mode=0600[, device=0]])`828829Создаёт узел файловой системы (файл, специальный файл устройства или именованный канал) с именем *filename*. *mode* задаёт как права доступа, так и тип создаваемого узла, комбинируясь (побитовое ИЛИ) с одной из констант `stat.S_IFREG`, `stat.S_IFCHR`, `stat.S_IFBLK` и `stat.S_IFIFO` (эти константы доступны в [`stat`](https://python-all.ru/2.7/library/stat.html#module-stat)). Для `stat.S_IFCHR` и `stat.S_IFBLK` параметр *device* определяет вновь создаваемый специальный файл устройства (вероятно, с помощью [`os.makedev()`](https://python-all.ru/2.7/library/os.html#os.makedev)), в противном случае он игнорируется.830831Новое в версии 2.3.832833#### `os.major(device)`834835Извлекает старший номер устройства из сырого номера устройства (обычно поля `st_dev` или `st_rdev` из `stat`).836837Новое в версии 2.3.838839#### `os.minor(device)`840841Извлекает младший номер устройства из сырого номера устройства (обычно поля `st_dev` или `st_rdev` из `stat`).842843Новое в версии 2.3.844845#### `os.makedev(major, minor)`846847Составляет сырой номер устройства из старшего и младшего номеров устройства.848849Новое в версии 2.3.850851#### `os.mkdir(path[, mode])`852853Создаёт каталог с именем *path* с числовым режимом *mode*. Значение по умолчанию для *mode* – `0777` (восьмеричное). Если каталог уже существует, вызывается исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).854855На некоторых системах *mode* игнорируется. Если он используется, сначала применяется маска текущего umask. Если установлены биты, отличные от последних 9 (то есть последних 3 цифр восьмеричного представления *mode*), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать [`chmod()`](https://python-all.ru/2.7/library/os.html#os.chmod).856857Также можно создавать временные каталоги; см. функцию [`tempfile.mkdtemp()`](https://python-all.ru/2.7/library/tempfile.html#tempfile.mkdtemp) модуля [`tempfile`](https://python-all.ru/2.7/library/tempfile.html#module-tempfile).858859Доступность: Unix, Windows.860861#### `os.makedirs(path[, mode])`862863Функция рекурсивного создания каталогов. Подобна [`mkdir()`](https://python-all.ru/2.7/library/os.html#os.mkdir), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога. Вызывает исключение [`error`](https://python-all.ru/2.7/library/os.html#os.error), если конечный каталог уже существует или не может быть создан. Значение по умолчанию для *mode* – `0777` (восьмеричное).864865Параметр *mode* передается в [`mkdir()`](https://python-all.ru/2.7/library/os.html#os.mkdir); подробнее об интерпретации см. в [описании mkdir()](https://python-all.ru/2.7/library/os.html#mkdir-modebits).866867> **Примечание**868>869> [`makedirs()`](https://python-all.ru/2.7/library/os.html#os.makedirs) запутается, если элементы пути для создания содержат [`os.pardir`](https://python-all.ru/2.7/library/os.html#os.pardir).870871Новое в версии 1.5.2.872873Изменено в версии 2.3: Эта функция теперь корректно обрабатывает пути UNC.874875#### `os.pathconf(path, name)`876877Возвращает информацию о системной конфигурации для указанного файла. *name* задаёт запрашиваемое значение конфигурации; это может быть строка, содержащая имя определённого системного значения. Эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). На некоторых платформах могут быть также определены дополнительные имена. Имена, известные операционной системе, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это соответствие, допускается также передача целого числа в качестве *name*.878879Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `pathconf_names`, возбуждается исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError) с [`errno.EINVAL`](https://python-all.ru/2.7/library/errno.html#errno.EINVAL) в качестве кода ошибки.880881Доступность: Unix.882883#### `os.pathconf_names`884885Словарь, сопоставляющий имена, принимаемые [`pathconf()`](https://python-all.ru/2.7/library/os.html#os.pathconf) и [`fpathconf()`](https://python-all.ru/2.7/library/os.html#os.fpathconf), с целочисленными значениями, определёнными для этих имён операционной системой. Его можно использовать для определения набора имён, известных системе. Доступность: Unix.886887#### `os.readlink(path)`888889Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть как абсолютным, так и относительным путём; если он относительный, его можно преобразовать в абсолютный путь с помощью `os.path.join(os.path.dirname(path), result)`.890891Изменено в версии 2.6: Если *path* является объектом Unicode, результат также будет объектом Unicode.892893Доступность: Unix.894895#### `os.remove(path)`896897Удаляет файл *path*. Если *path* является каталогом, вызывается исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError); для удаления каталога см. [`rmdir()`](https://python-all.ru/2.7/library/os.html#os.rmdir) ниже. Эта функция идентична функции [`unlink()`](https://python-all.ru/2.7/library/os.html#os.unlink), описанной ниже. В Windows попытка удалить файл, который используется, приводит к исключению; в Unix запись в каталоге удаляется, но выделенное файлу хранилище не освобождается до тех пор, пока исходный файл больше не используется.898899Доступность: Unix, Windows.900901#### `os.removedirs(path)`902903Рекурсивно удаляет каталоги. Работает как [`rmdir()`](https://python-all.ru/2.7/library/os.html#os.rmdir), за исключением того, что если конечный каталог успешно удалён, [`removedirs()`](https://python-all.ru/2.7/library/os.html#os.removedirs) пытается последовательно удалить все родительские каталоги, указанные в *path*, пока не возникнет ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст). Например, `os.removedirs('foo/bar/baz')` сначала удалит каталог `'foo/bar/baz'`, а затем удалит `'foo/bar'` и `'foo'`, если они пусты. Возбуждает [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError), если конечный каталог не удалось удалить.904905Новое в версии 1.5.2.906907#### `os.rename(src, dst)`908909Переименовывает файл или каталог *src* в *dst*. Если *dst* является каталогом, будет вызвано исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError). В Unix, если *dst* существует и является файлом, он будет бесшумно заменён, если у пользователя есть разрешение. Операция может завершиться ошибкой в некоторых разновидностях Unix, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если *dst* уже существует, будет вызвано исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError), даже если это файл; может не быть способа реализовать атомарное переименование, когда *dst* указывает на существующий файл.910911Доступность: Unix, Windows.912913#### `os.renames(old, new)`914915Функция рекурсивного переименования каталогов или файлов. Работает как [`rename()`](https://python-all.ru/2.7/library/os.html#os.rename), за исключением того, что сначала предпринимается попытка создать все промежуточные каталоги, необходимые для формирования нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, будут удалены с помощью [`removedirs()`](https://python-all.ru/2.7/library/os.html#os.removedirs).916917Новое в версии 1.5.2.918919> **Примечание**920>921> Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.922923#### `os.rmdir(path)`924925Удаляет каталог *path*. Работает только когда каталог пуст, в противном случае возбуждается [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError). Для удаления целых деревьев каталогов можно использовать [`shutil.rmtree()`](https://python-all.ru/2.7/library/shutil.html#shutil.rmtree).926927Доступность: Unix, Windows.928929#### `os.stat(path)`930931Выполняет эквивалент системного вызова `stat()` для заданного пути. (Эта функция переходит по символическим ссылкам; для stat символической ссылки используйте [`lstat()`](https://python-all.ru/2.7/library/os.html#os.lstat).)932933Возвращаемое значение – объект, атрибуты которого соответствуют полям структуры `stat`, а именно:934935- `st_mode` - биты защиты,936- `st_ino` - номер inode,937- `st_dev` - устройство,938- `st_nlink` - количество жёстких ссылок,939- `st_uid` - идентификатор владельца (uid),940- `st_gid` - идентификатор группы владельца (gid),941- `st_size` – размер файла в байтах,942- `st_atime` – время последнего доступа,943- `st_mtime` – время последнего изменения содержимого,944- `st_ctime` – платформозависимо; время последнего изменения метаданных в Unix или время создания в Windows)945946Изменено в версии 2.3: Если [`stat_float_times()`](https://python-all.ru/2.7/library/os.html#os.stat_float_times) возвращает `True`, значения времени являются числами с плавающей запятой, выражающими секунды. Доли секунды могут сообщаться, если система это поддерживает. См. [`stat_float_times()`](https://python-all.ru/2.7/library/os.html#os.stat_float_times) для дальнейшего обсуждения.947948В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:949950- `st_blocks` – количество блоков по 512 байт, выделенных файлу951- `st_blksize` – размер блока файловой системы для эффективного ввода-вывода952- `st_rdev` – тип устройства, если это inode-устройство953- `st_flags` – пользовательские флаги для файла954955В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):956957- `st_gen` – номер поколения файла958- `st_birthtime` – время создания файла959960В системах RISCOS также доступны следующие атрибуты:961962- `st_ftype` (тип файла)963- `st_attrs` (атрибуты)964- `st_obtype` (тип объекта).965966> **Примечание**967>968> Точный смысл и разрешение атрибутов `st_atime`, `st_mtime` и `st_ctime` зависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, атрибут `st_mtime` имеет разрешение 2 секунды, а `st_atime` – всего 1 день. Подробности см. в документации операционной системы.969970Для обратной совместимости возвращаемое значение [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat) также доступно в виде кортежа как минимум из 10 целых чисел, представляющих наиболее важные (и переносимые) члены структуры `stat` в порядке `st_mode`, `st_ino`, `st_dev`, `st_nlink`, `st_uid`, `st_gid`, `st_size`, `st_atime`, `st_mtime`, `st_ctime`. Некоторые реализации могут добавлять дополнительные элементы в конец.971972Стандартный модуль [`stat`](https://python-all.ru/2.7/library/stat.html#module-stat) определяет функции и константы, полезные для извлечения информации из структуры `stat`. (В Windows некоторые элементы заполняются фиктивными значениями.)973974Пример:975976```python977>>> import os978>>> statinfo = os.stat('somefile.txt')979>>> statinfo980(33188, 422511, 769, 1, 1032, 100, 926, 1105022698,1105022732, 1105022732)981>>> statinfo.st_size982926983```984985Доступность: Unix, Windows.986987Изменено в версии 2.2: Добавлен доступ к значениям в качестве атрибутов возвращаемого объекта.988989Изменено в версии 2.5: Добавлены `st_gen` и `st_birthtime`.990991#### `os.stat_float_times([newvalue])`992993Определяет, представляет ли `stat_result` временные метки как объекты float. Если *newvalue* равен `True`, будущие вызовы [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat) возвращают float, если равен `False`, будущие вызовы возвращают int. Если *newvalue* опущен, возвращает текущую настройку.994995Для совместимости со старыми версиями Python, доступ к `stat_result` как к кортежу всегда возвращает целые числа.996997Изменено в версии 2.5: Python теперь по умолчанию возвращает значения типа float. Приложения, которые некорректно работают с временными метками с плавающей запятой, могут использовать эту функцию для восстановления старого поведения.998999Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только секундное разрешение; на таких системах дробная часть всегда будет равна нулю.10001001Рекомендуется изменять этот параметр только во время запуска программы в модуле *\_\_main\_\_*; библиотеки никогда не должны изменять этот параметр. Если приложение использует библиотеку, которая некорректно работает при обработке вещественных временных меток, этому приложению следует отключить эту возможность до тех пор, пока библиотека не будет исправлена.10021003#### `os.statvfs(path)`10041005Выполняет системный вызов `statvfs()` для указанного пути. Возвращаемое значение – объект, атрибуты которого описывают файловую систему по указанному пути и соответствуют членам структуры `statvfs`, а именно: `f_bsize`, `f_frsize`, `f_blocks`, `f_bfree`, `f_bavail`, `f_files`, `f_ffree`, `f_favail`, `f_flag`, `f_namemax`.10061007Для обратной совместимости возвращаемое значение также доступно в виде кортежа, значения которого соответствуют атрибутам в порядке, указанном выше. Стандартный модуль [`statvfs`](https://python-all.ru/2.7/library/statvfs.html#module-statvfs) определяет константы, полезные для извлечения информации из структуры `statvfs` при доступе к ней как к последовательности; это остаётся полезным при написании кода, который должен работать с версиями Python, не поддерживающими доступ к полям как к атрибутам.10081009Доступность: Unix.10101011Изменено в версии 2.2: Добавлен доступ к значениям в качестве атрибутов возвращаемого объекта.10121013#### `os.symlink(source, link_name)`10141015Создаёт символическую ссылку, указывающую на *source*, с именем *link\_name*.10161017Доступность: Unix.10181019#### `os.tempnam([dir[, prefix]])`10201021Возвращает уникальное имя пути, подходящее для создания временного файла. Это будет абсолютный путь, указывающий на потенциальную запись каталога в каталоге *dir* или в общем месте для временных файлов, если *dir* опущен или `None`. Если задан и не `None`, *prefix* используется для указания короткого префикса имени файла. Приложения отвечают за правильное создание и управление файлами, созданными с использованием путей, возвращённых [`tempnam()`](https://python-all.ru/2.7/library/os.html#os.tempnam); автоматическая очистка не предоставляется. В Unix переменная окружения `TMPDIR` переопределяет *dir*, а в Windows используется `TMP`. Конкретное поведение этой функции зависит от реализации библиотеки C; некоторые аспекты недостаточно определены в системной документации.10221023> **Предупреждение**1024>1025> Использование [`tempnam()`](https://python-all.ru/2.7/library/os.html#os.tempnam) уязвимо для атак через символические ссылки; рассмотрите возможность использования [`tmpfile()`](https://python-all.ru/2.7/library/os.html#os.tmpfile) (раздел [Создание файловых объектов](https://python-all.ru/2.7/library/os.html#os-newstreams)) вместо этого.10261027Доступность: Unix, Windows.10281029#### `os.tmpnam()`10301031Возвращает уникальное имя пути, подходящее для создания временного файла. Это будет абсолютный путь, указывающий на потенциальную запись каталога в общем месте для временных файлов. Приложения отвечают за правильное создание и управление файлами, созданными с использованием путей, возвращённых [`tmpnam()`](https://python-all.ru/2.7/library/os.html#os.tmpnam); автоматическая очистка не предоставляется.10321033> **Предупреждение**1034>1035> Использование [`tmpnam()`](https://python-all.ru/2.7/library/os.html#os.tmpnam) уязвимо для атак через символические ссылки; рассмотрите возможность использования [`tmpfile()`](https://python-all.ru/2.7/library/os.html#os.tmpfile) (раздел [Создание файловых объектов](https://python-all.ru/2.7/library/os.html#os-newstreams)) вместо этого.10361037Доступность: Unix, Windows. Однако эту функцию, вероятно, не следует использовать в Windows: реализация Microsoft [`tmpnam()`](https://python-all.ru/2.7/library/os.html#os.tmpnam) всегда создаёт имя в корневом каталоге текущего диска, а это, как правило, неудачное место для временного файла (в зависимости от прав доступа вы можете даже не иметь возможности открыть файл с таким именем).10381039#### `os.TMP_MAX`10401041Максимальное количество уникальных имён, которые [`tmpnam()`](https://python-all.ru/2.7/library/os.html#os.tmpnam) сгенерирует перед повторным использованием имён.10421043#### `os.unlink(path)`10441045Удаляет файл *path*. Это та же функция, что и [`remove()`](https://python-all.ru/2.7/library/os.html#os.remove); имя [`unlink()`](https://python-all.ru/2.7/library/os.html#os.unlink) является её традиционным именем в Unix.10461047Доступность: Unix, Windows.10481049#### `os.utime(path, times)`10501051Устанавливает время доступа и модификации файла, заданного *path*. Если *times* равно `None`, то время доступа и модификации файла устанавливаются в текущее время. (Эффект аналогичен выполнению Unix-программы **touch** для указанного пути.) В противном случае *times* должен быть кортежем из двух чисел вида `(atime, mtime)`, который используется для установки времени доступа и модификации соответственно. Возможность указать каталог в качестве *path* зависит от того, реализует ли операционная система каталоги как файлы (например, Windows этого не делает). Обратите внимание, что точные установленные значения времени могут не возвращаться последующим вызовом [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat) из-за разрешения, с которым операционная система записывает время доступа и модификации; см. [`stat()`](https://python-all.ru/2.7/library/os.html#os.stat).10521053Изменено в версии 2.0: Добавлена поддержка `None` для *times*.10541055Доступность: Unix, Windows.10561057#### `os.walk(top, topdown=True, onerror=None, followlinks=False)`10581059Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге *top* (включая сам *top*) возвращает кортеж из трех элементов `(dirpath, dirnames, filenames)`.10601061*dirpath* – это строка, путь к каталогу. *dirnames* – список имен подкаталогов в *dirpath* (за исключением `'.'` и `'..'`). *filenames* – список имен файлов, не являющихся каталогами, в *dirpath*. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с *top*) к файлу или каталогу в *dirpath*, выполните `os.path.join(dirpath, name)`.10621063Если необязательный аргумент *topdown* равен `True` или не указан, тройка для каталога генерируется до троек для всех его подкаталогов (каталоги обходятся сверху вниз). Если *topdown* равен `False`, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх). Независимо от значения *topdown*, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.10641065Когда *topdown* равен `True`, вызывающий код может изменить список *dirnames* на месте (возможно, используя [`del`](https://python-all.ru/2.7/reference/simple_stmts.html#del) или присваивание срезу), и [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) будет рекурсивно обходить только те подкаталоги, имена которых остались в *dirnames*; это можно использовать для обрезания дерева поиска, задания определенного порядка обхода или даже для уведомления [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) о каталогах, которые вызывающий код создает или переименовывает до того, как [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) возобновит работу. Изменение *dirnames*, когда *topdown* равен `False`, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в *dirnames* генерируются до того, как генерируется сам *dirpath*.10661067По умолчанию ошибки из вызова [`listdir()`](https://python-all.ru/2.7/library/os.html#os.listdir) игнорируются. Если указан необязательный аргумент *onerror*, это должна быть функция; она будет вызвана с одним аргументом – экземпляром [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError). Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибут `filename` объекта исключения.10681069По умолчанию [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) не будет спускаться в символические ссылки, ведущие к каталогам. Установите *followlinks* в `True`, чтобы посещать каталоги, на которые указывают симлинки, в системах, поддерживающих их.10701071Новое в версии 2.6: Параметр *followlinks*.10721073> **Примечание**1074>1075> Следует учитывать, что установка *followlinks* в `True` может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) не отслеживает уже посещённые каталоги.10761077> **Примечание**1078>1079> Если передается относительный путь, не следует изменять текущий рабочий каталог между возобновлениями [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk). [`walk()`](https://python-all.ru/2.7/library/os.html#os.walk) никогда не меняет текущий каталог и предполагает, что и его вызывающий код этого не делает.10801081В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:10821083```python1084import os1085from os.path import join, getsize1086for root, dirs, files in os.walk('python/Lib/email'):1087 print root, "consumes",1088 print sum(getsize(join(root, name)) for name in files),1089 print "bytes in", len(files), "non-directory files"1090 if 'CVS' in dirs:1091 dirs.remove('CVS') # не заходить в CVS-каталоги1092```10931094В следующем примере обход дерева снизу вверх необходим: [`rmdir()`](https://python-all.ru/2.7/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст.10951096```python1097# Удалить всё, доступное из каталога с именем "top",1098# при условии отсутствия символических ссылок.1099# ВНИМАНИЕ: это опасно! Например, если top == '/', это1100# может удалить все ваши файлы на диске.1101import os1102for root, dirs, files in os.walk(top, topdown=False):1103 for name in files:1104 os.remove(os.path.join(root, name))1105 for name in dirs:1106 os.rmdir(os.path.join(root, name))1107```11081109Новое в версии 2.3.11101111## 15.1.5. Управление процессами11121113Эти функции можно использовать для создания процессов и управления ими.11141115Различные функции [`exec*`](https://python-all.ru/2.7/library/os.html#os.execl) принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это `argv[0]`, передаваемый в `main()` программы. Например, `os.execv('/bin/echo', ['foo', 'bar'])` выведет на стандартный вывод только `bar`; `foo` будет проигнорирован.11161117#### `os.abort()`11181119Генерирует сигнал `SIGABRT` для текущего процесса. На Unix поведение по умолчанию – создание дампа памяти; на Windows процесс немедленно возвращает код завершения `3`. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный для `SIGABRT` с помощью [`signal.signal()`](https://python-all.ru/2.7/library/signal.html#signal.signal).11201121Доступность: Unix, Windows.11221123#### `os.execl(path, arg0, arg1, ...)`11241125#### `os.execle(path, arg0, arg1, ..., env)`11261127#### `os.execlp(file, arg0, arg1, ...)`11281129#### `os.execlpe(file, arg0, arg1, ..., env)`11301131#### `os.execv(path, args)`11321133#### `os.execve(path, args, env)`11341135#### `os.execvp(file, args)`11361137#### `os.execvpe(file, args, env)`11381139Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и получает тот же идентификатор процесса, что и вызывающий. Ошибки сообщаются как исключения [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).11401141Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому если на этих открытых файлах могут быть буферизованные данные, следует сбросить их с помощью `sys.stdout.flush()` или [`os.fsync()`](https://python-all.ru/2.7/library/os.html#os.fsync) перед вызовом функции [`exec*`](https://python-all.ru/2.7/library/os.html#os.execl).11421143Варианты с буквами «l» и «v» функций [`exec*`](https://python-all.ru/2.7/library/os.html#os.execl) различаются способом передачи аргументов командной строки. Варианты «l», пожалуй, проще в использовании, если количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными аргументами функций `execl*()`. Варианты «v» удобны, когда количество параметров переменное: аргументы передаются в виде списка или кортежа как параметр *args*. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, хотя это и не принудительно.11441145Варианты, содержащие "p" ближе к концу ([`execlp()`](https://python-all.ru/2.7/library/os.html#os.execlp), [`execlpe()`](https://python-all.ru/2.7/library/os.html#os.execlpe), [`execvp()`](https://python-all.ru/2.7/library/os.html#os.execvp) и [`execvpe()`](https://python-all.ru/2.7/library/os.html#os.execvpe)), используют переменную окружения `PATH` для поиска *файла* программы. При замене окружения (с помощью одного из вариантов [`exec*e`](https://python-all.ru/2.7/library/os.html#os.execl), обсуждаемых в следующем абзаце) новая среда используется как источник переменной `PATH`. Остальные варианты, [`execl()`](https://python-all.ru/2.7/library/os.html#os.execl), [`execle()`](https://python-all.ru/2.7/library/os.html#os.execle), [`execv()`](https://python-all.ru/2.7/library/os.html#os.execv) и [`execve()`](https://python-all.ru/2.7/library/os.html#os.execve), не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать правильный абсолютный или относительный путь.11461147Для [`execle()`](https://python-all.ru/2.7/library/os.html#os.execle), [`execlpe()`](https://python-all.ru/2.7/library/os.html#os.execlpe), [`execve()`](https://python-all.ru/2.7/library/os.html#os.execve) и [`execvpe()`](https://python-all.ru/2.7/library/os.html#os.execvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, используемым для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`execl()`](https://python-all.ru/2.7/library/os.html#os.execl), [`execlp()`](https://python-all.ru/2.7/library/os.html#os.execlp), [`execv()`](https://python-all.ru/2.7/library/os.html#os.execv) и [`execvp()`](https://python-all.ru/2.7/library/os.html#os.execvp) заставляют новый процесс наследовать окружение текущего процесса.11481149Доступность: Unix, Windows.11501151#### `os._exit(n)`11521153Завершает процесс с кодом *n*, без вызова обработчиков очистки, сброса буферов stdio и т.д.11541155Доступность: Unix, Windows.11561157> **Примечание**1158>1159> Стандартный способ завершения – `sys.exit(n)`. [`_exit()`](https://python-all.ru/2.7/library/os.html#os._exit) обычно следует использовать только в дочернем процессе после [`fork()`](https://python-all.ru/2.7/library/os.html#os.fork).11601161Определены следующие коды завершения, которые можно использовать с [`_exit()`](https://python-all.ru/2.7/library/os.html#os._exit), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.11621163> **Примечание**1164>1165> Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.11661167#### `os.EX_OK`11681169Код завершения, означающий, что ошибок не возникло.11701171Доступность: Unix.11721173Новое в версии 2.3.11741175#### `os.EX_USAGE`11761177Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.11781179Доступность: Unix.11801181Новое в версии 2.3.11821183#### `os.EX_DATAERR`11841185Код завершения, означающий, что входные данные были некорректны.11861187Доступность: Unix.11881189Новое в версии 2.3.11901191#### `os.EX_NOINPUT`11921193Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.11941195Доступность: Unix.11961197Новое в версии 2.3.11981199#### `os.EX_NOUSER`12001201Код завершения, означающий, что указанный пользователь не существовал.12021203Доступность: Unix.12041205Новое в версии 2.3.12061207#### `os.EX_NOHOST`12081209Код завершения, означающий, что указанный хост не существовал.12101211Доступность: Unix.12121213Новое в версии 2.3.12141215#### `os.EX_UNAVAILABLE`12161217Код завершения, означающий, что требуемая служба недоступна.12181219Доступность: Unix.12201221Новое в версии 2.3.12221223#### `os.EX_SOFTWARE`12241225Код завершения, означающий, что обнаружена внутренняя программная ошибка.12261227Доступность: Unix.12281229Новое в версии 2.3.12301231#### `os.EX_OSERR`12321233Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.12341235Доступность: Unix.12361237Новое в версии 2.3.12381239#### `os.EX_OSFILE`12401241Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.12421243Доступность: Unix.12441245Новое в версии 2.3.12461247#### `os.EX_CANTCREAT`12481249Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.12501251Доступность: Unix.12521253Новое в версии 2.3.12541255#### `os.EX_IOERR`12561257Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.12581259Доступность: Unix.12601261Новое в версии 2.3.12621263#### `os.EX_TEMPFAIL`12641265Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.12661267Доступность: Unix.12681269Новое в версии 2.3.12701271#### `os.EX_PROTOCOL`12721273Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.12741275Доступность: Unix.12761277Новое в версии 2.3.12781279#### `os.EX_NOPERM`12801281Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).12821283Доступность: Unix.12841285Новое в версии 2.3.12861287#### `os.EX_CONFIG`12881289Код выхода, указывающий на ошибку конфигурации.12901291Доступность: Unix.12921293Новое в версии 2.3.12941295#### `os.EX_NOTFOUND`12961297Код выхода, означающий нечто вроде «запись не найдена».12981299Доступность: Unix.13001301Новое в версии 2.3.13021303#### `os.fork()`13041305Порождает дочерний процесс. Возвращает `0` в дочернем процессе и идентификатор дочернего процесса в родительском. При возникновении ошибки возбуждается [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).13061307Обратите внимание, что некоторые платформы, включая FreeBSD \<= 6.3, Cygwin и OS/2 EMX, имеют известные проблемы при использовании fork() из потока.13081309> **Предупреждение**1310>1311> См. [`ssl`](https://python-all.ru/2.7/library/ssl.html#module-ssl) для приложений, использующих модуль SSL с fork().13121313Доступность: Unix.13141315#### `os.forkpty()`13161317Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару `(pid, fd)`, где *pid* равен `0` в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, и *fd* – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модуль [`pty`](https://python-all.ru/2.7/library/pty.html#module-pty). Если возникает ошибка, возбуждается [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError).13181319Доступность: некоторые разновидности Unix.13201321#### `os.kill(pid, sig)`13221323Отправляет сигнал *sig* процессу *pid*. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле [`signal`](https://python-all.ru/2.7/library/signal.html#module-signal).13241325Windows: Сигналы [`signal.CTRL_C_EVENT`](https://python-all.ru/2.7/library/signal.html#signal.CTRL_C_EVENT) и [`signal.CTRL_BREAK_EVENT`](https://python-all.ru/2.7/library/signal.html#signal.CTRL_BREAK_EVENT) – это специальные сигналы, которые можно отправлять только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение *sig* приведет к безусловному завершению процесса через API TerminateProcess, а код возврата будет установлен в *sig*. Версия [`kill()`](https://python-all.ru/2.7/library/os.html#os.kill) для Windows дополнительно принимает дескрипторы процессов для завершения.13261327Новое в версии 2.7: Поддержка Windows13281329#### `os.killpg(pgid, sig)`13301331Отправить сигнал *sig* группе процессов *pgid*.13321333Доступность: Unix.13341335Новое в версии 2.3.13361337#### `os.nice(increment)`13381339Добавить *increment* к «приоритету» процесса. Возвращает новый приоритет.13401341Доступность: Unix.13421343#### `os.plock(op)`13441345Блокирует сегменты программы в памяти. Значение *op* (определённое в `<sys/lock.h>`) определяет, какие сегменты блокируются.13461347Доступность: Unix.13481349#### `os.popen(...)`13501351#### `os.popen2(...)`13521353#### `os.popen3(...)`13541355#### `os.popen4(...)`13561357Запускает дочерние процессы и возвращает открытые каналы для взаимодействия. Эти функции описаны в разделе [Создание файловых объектов](https://python-all.ru/2.7/library/os.html#os-newstreams).13581359#### `os.spawnl(mode, path, ...)`13601361#### `os.spawnle(mode, path, ..., env)`13621363#### `os.spawnlp(mode, file, ...)`13641365#### `os.spawnlpe(mode, file, ..., env)`13661367#### `os.spawnv(mode, path, args)`13681369#### `os.spawnve(mode, path, args, env)`13701371#### `os.spawnvp(mode, file, args)`13721373#### `os.spawnvpe(mode, file, args, env)`13741375Выполняет программу *path* в новом процессе.13761377(Обратите внимание, что модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) предоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно см. раздел [Замена старых функций модулем subprocess](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements).)13781379Если *mode* равен [`P_NOWAIT`](https://python-all.ru/2.7/library/os.html#os.P_NOWAIT), эта функция возвращает идентификатор нового процесса; если *mode* равен [`P_WAIT`](https://python-all.ru/2.7/library/os.html#os.P_WAIT), возвращает код выхода процесса, если он завершился нормально, или `-signal`, где *signal* – сигнал, который завершил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid).13801381Варианты «l» и «v» функций [`spawn*`](https://python-all.ru/2.7/library/os.html#os.spawnl) различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `spawnl*()`. Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр *args*. В любом случае, аргументы дочернего процесса должны начинаться с имени выполняемой команды.13821383Варианты, содержащие вторую «p» в конце ([`spawnlp()`](https://python-all.ru/2.7/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/2.7/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/2.7/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/2.7/library/os.html#os.spawnvpe)), используют переменную окружения `PATH` для поиска программы *file*. При замене окружения (с помощью одного из вариантов [`spawn*e`](https://python-all.ru/2.7/library/os.html#os.spawnl), обсуждаемых в следующем абзаце) новое окружение используется как источник переменной `PATH`. Другие варианты, [`spawnl()`](https://python-all.ru/2.7/library/os.html#os.spawnl), [`spawnle()`](https://python-all.ru/2.7/library/os.html#os.spawnle), [`spawnv()`](https://python-all.ru/2.7/library/os.html#os.spawnv) и [`spawnve()`](https://python-all.ru/2.7/library/os.html#os.spawnve), не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.13841385Для [`spawnle()`](https://python-all.ru/2.7/library/os.html#os.spawnle), [`spawnlpe()`](https://python-all.ru/2.7/library/os.html#os.spawnlpe), [`spawnve()`](https://python-all.ru/2.7/library/os.html#os.spawnve) и [`spawnvpe()`](https://python-all.ru/2.7/library/os.html#os.spawnvpe) (обратите внимание, все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`spawnl()`](https://python-all.ru/2.7/library/os.html#os.spawnl), [`spawnlp()`](https://python-all.ru/2.7/library/os.html#os.spawnlp), [`spawnv()`](https://python-all.ru/2.7/library/os.html#os.spawnv) и [`spawnvp()`](https://python-all.ru/2.7/library/os.html#os.spawnvp) заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре *env* должны быть строками; недопустимые ключи или значения приведут к ошибке функции с возвращаемым значением `127`.13861387В качестве примера следующие вызовы [`spawnlp()`](https://python-all.ru/2.7/library/os.html#os.spawnlp) и [`spawnvpe()`](https://python-all.ru/2.7/library/os.html#os.spawnvpe) эквивалентны:13881389```python1390import os1391os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')13921393L = ['cp', 'index.html', '/dev/null']1394os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)1395```13961397Доступность: Unix, Windows. [`spawnlp()`](https://python-all.ru/2.7/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/2.7/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/2.7/library/os.html#os.spawnvp)\\nи [`spawnvpe()`](https://python-all.ru/2.7/library/os.html#os.spawnvpe) недоступны в Windows. [`spawnle()`](https://python-all.ru/2.7/library/os.html#os.spawnle) и\\n[`spawnve()`](https://python-all.ru/2.7/library/os.html#os.spawnve) не являются потокобезопасными в Windows; рекомендуется использовать\\nмодуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess).13981399Новое в версии 1.6.14001401#### `os.P_NOWAIT`14021403#### `os.P_NOWAITO`14041405Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/2.7/library/os.html#os.spawnl). Если указано любое из этих значений, функции `spawn*()` возвращаются сразу после создания нового процесса, возвращая его идентификатор в качестве возвращаемого значения.14061407Доступность: Unix, Windows.14081409Новое в версии 1.6.14101411#### `os.P_WAIT`14121413Возможное значение параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/2.7/library/os.html#os.spawnl). Если указано это значение как *mode*, функции `spawn*()` не вернутся, пока новый процесс не завершится, и вернут код выхода процесса в случае успешного завершения, или `-signal`, если сигнал завершит процесс.14141415Доступность: Unix, Windows.14161417Новое в версии 1.6.14181419#### `os.P_DETACH`14201421#### `os.P_OVERLAY`14221423Возможные значения параметра *mode* для семейства функций [`spawn*`](https://python-all.ru/2.7/library/os.html#os.spawnl). Они менее переносимы, чем перечисленные выше. [`P_DETACH`](https://python-all.ru/2.7/library/os.html#os.P_DETACH) аналогичен [`P_NOWAIT`](https://python-all.ru/2.7/library/os.html#os.P_NOWAIT), но новый процесс отсоединяется от консоли вызывающего процесса. Если используется [`P_OVERLAY`](https://python-all.ru/2.7/library/os.html#os.P_OVERLAY), текущий процесс будет заменён; функция `spawn*()` не вернётся.14241425Доступность: Windows.14261427Новое в версии 1.6.14281429#### `os.startfile(path[, operation])`14301431Запускает файл в связанном с ним приложении.14321433Если *operation* не указан или равен `'open'`, это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде **start** из интерактивной командной строки: файл открывается с помощью приложения, связанного с его расширением (если такое есть).14341435Если указана другая *operation*, она должна быть «глаголом команды» (command verb), определяющим, что делать с файлом. Распространённые глаголы, задокументированные Microsoft: `'print'` и `'edit'` (используются для файлов), а также `'explore'` и `'find'` (используются для каталогов).14361437[`startfile()`](https://python-all.ru/2.7/library/os.html#os.startfile) возвращается сразу после запуска соответствующего приложения. Невозможно дождаться закрытия приложения или получить его код возврата. Параметр *path* задаётся относительно текущего каталога. Если требуется использовать абсолютный путь, убедитесь, что первый символ не является косой чертой (`'/'`); в противном случае базовая функция Win32 `ShellExecute()` не сработает. Используйте функцию [`os.path.normpath()`](https://python-all.ru/2.7/library/os.path.html#os.path.normpath), чтобы путь был правильно закодирован для Win32.14381439Доступность: Windows.14401441Новое в версии 2.0.14421443Новое в версии 2.5: Параметр *operation*.14441445#### `os.system(command)`14461447Выполняет команду (строку) в подчиненной оболочке. Это реализуется вызовом стандартной функции C `system()` и имеет те же ограничения. Изменения [`sys.stdin`](https://python-all.ru/2.7/library/sys.html#sys.stdin) и т.д. не отражаются в окружении выполняемой команды.14481449В Unix возвращаемое значение – это код завершения процесса, закодированный в формате, указанном для [`wait()`](https://python-all.ru/2.7/library/os.html#os.wait). Обратите внимание, что POSIX не определяет значение возвращаемого значения функции C `system()`, поэтому возвращаемое значение функции Python зависит от системы.14501451В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения *command*, заданное переменной окружения Windows `COMSPEC`: в системах с **command.com** (Windows 95, 98 и ME) это всегда `0`; в системах с **cmd.exe** (Windows NT, 2000 и XP) это код завершения выполненной команды; в системах, использующих нестандартную оболочку, следует обратиться к документации используемой оболочки.14521453Модуль [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) предоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем этой функции. Смотрите раздел [Замена старых функций модулем подпроцесс](https://python-all.ru/2.7/library/subprocess.html#subprocess-replacements) в документации [`subprocess`](https://python-all.ru/2.7/library/subprocess.html#module-subprocess) для получения полезных примеров.14541455Доступность: Unix, Windows.14561457#### `os.times()`14581459Возвращает кортеж из 5 чисел с плавающей запятой, указывающих накопленное (процессорное или иное) время в секундах. Элементы: пользовательское время, системное время, пользовательское время дочерних процессов, системное время дочерних процессов и прошедшее реальное время с некоторой фиксированной точки в прошлом – именно в таком порядке. См. страницу руководства Unix *times(2)* или соответствующую документацию Windows Platform API. В Windows заполнены только первые два элемента, остальные равны нулю.14601461Доступность: Unix, Windows14621463#### `os.wait()`14641465Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.14661467Доступность: Unix.14681469#### `os.waitpid(pid, options)`14701471Подробности этой функции различаются в Unix и Windows.14721473В Unix: ожидает завершения дочернего процесса, заданного идентификатором процесса *pid*, и возвращает кортеж, содержащий его идентификатор процесса и индикатор статуса завершения (закодированный как для [`wait()`](https://python-all.ru/2.7/library/os.html#os.wait)). Семантика вызова зависит от значения целочисленного параметра *options*, который должен быть `0` для нормальной работы.14741475Если *pid* больше `0`, [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid) запрашивает информацию о состоянии для этого конкретного процесса. Если *pid* равен `0`, запрос выполняется для состояния любого дочернего процесса в группе процессов текущего процесса. Если *pid* равен `-1`, запрос относится к любому дочернему процессу текущего процесса. Если *pid* меньше `-1`, запрашивается состояние для любого процесса в группе процессов `-pid` (абсолютное значение *pid*).14761477Возбуждается [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError) со значением errno, когда системный вызов возвращает -1.14781479В Windows: ожидает завершения процесса, заданного дескриптором процесса *pid*, и возвращает кортеж, содержащий *pid* и его статус завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). *pid*, меньший или равный `0`, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного параметра *options* не влияет на результат. *pid* может относиться к любому процессу, чей идентификатор известен, не обязательно дочернему. Функции [`spawn*`](https://python-all.ru/2.7/library/os.html#os.spawnl), вызванные с [`P_NOWAIT`](https://python-all.ru/2.7/library/os.html#os.P_NOWAIT), возвращают подходящие дескрипторы процессов.14801481#### `os.wait3(options)`14821483Аналогично [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid), но без аргумента с идентификатором процесса; возвращается кортеж из трёх элементов, содержащий идентификатор процесса дочернего процесса, индикацию статуса завершения и информацию об использовании ресурсов. За подробностями об информации об использовании ресурсов обратитесь к [`resource`](https://python-all.ru/2.7/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/2.7/library/resource.html#resource.getrusage). Аргумент option совпадает с тем, что передаётся в [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid) и [`wait4()`](https://python-all.ru/2.7/library/os.html#os.wait4).14841485Доступность: Unix.14861487Новое в версии 2.5.14881489#### `os.wait4(pid, options)`14901491Аналогично [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid), но возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, указание статуса завершения и информацию об использовании ресурсов. За подробностями об информации об использовании ресурсов обратитесь к [`resource`](https://python-all.ru/2.7/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/2.7/library/resource.html#resource.getrusage). Аргументы для [`wait4()`](https://python-all.ru/2.7/library/os.html#os.wait4) такие же, как и для [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid).14921493Доступность: Unix.14941495Новое в версии 2.5.14961497#### `os.WNOHANG`14981499Опция для [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid), позволяющая вернуть результат немедленно, если статус дочернего процесса недоступен. В этом случае функция возвращает `(0, 0)`.15001501Доступность: Unix.15021503#### `os.WCONTINUED`15041505Эта опция позволяет сообщать о дочерних процессах, если они были возобновлены после остановки управления заданием с момента последнего сообщения их статуса.15061507Доступность: некоторые системы Unix.15081509Новое в версии 2.3.15101511#### `os.WUNTRACED`15121513Этот параметр заставляет сообщать о дочерних процессах, если они были остановлены, но их текущее состояние ещё не было сообщено с момента остановки.15141515Доступность: Unix.15161517Новое в версии 2.3.15181519Следующие функции принимают код состояния процесса, возвращаемый [`system()`](https://python-all.ru/2.7/library/os.html#os.system), [`wait()`](https://python-all.ru/2.7/library/os.html#os.wait) или [`waitpid()`](https://python-all.ru/2.7/library/os.html#os.waitpid), в качестве параметра. Они могут использоваться для определения статуса процесса.15201521#### `os.WCOREDUMP(status)`15221523Возвращает `True`, если для процесса был создан дамп ядра, в противном случае возвращает `False`.15241525Доступность: Unix.15261527Новое в версии 2.3.15281529#### `os.WIFCONTINUED(status)`15301531Возвращает `True`, если процесс был продолжен после остановки управления заданиями, иначе возвращает `False`.15321533Доступность: Unix.15341535Новое в версии 2.3.15361537#### `os.WIFSTOPPED(status)`15381539Возвращает `True`, если процесс был остановлен, иначе возвращает `False`.15401541Доступность: Unix.15421543#### `os.WIFSIGNALED(status)`15441545Возвращает `True`, если процесс завершился из-за сигнала, иначе возвращает `False`.15461547Доступность: Unix.15481549#### `os.WIFEXITED(status)`15501551Возвращает `True`, если процесс завершился с помощью системного вызова *exit(2)*, иначе возвращает `False`.15521553Доступность: Unix.15541555#### `os.WEXITSTATUS(status)`15561557Если `WIFEXITED(status)` истинно, возвращает целочисленный параметр системного вызова *exit(2)*. В противном случае возвращаемое значение не имеет смысла.15581559Доступность: Unix.15601561#### `os.WSTOPSIG(status)`15621563Возвращает сигнал, который вызвал остановку процесса.15641565Доступность: Unix.15661567#### `os.WTERMSIG(status)`15681569Возвращает сигнал, который вызвал завершение процесса.15701571Доступность: Unix.15721573## 15.1.6. Разные сведения о системе15741575#### `os.confstr(name)`15761577Возвращает строковые значения системной конфигурации. *name* задаёт извлекаемое значение; это может быть строка – имя определённого системного значения; такие имена заданы в ряде стандартов (POSIX, Unix 95, Unix 98 и других). На некоторых платформах определены и дополнительные имена. Имена, известные хост-операционной системе, представлены в виде ключей словаря `confstr_names`. Для тех переменных конфигурации, которых нет в этом отображении, также допускается передавать целое число в качестве *name*.15781579Если значение конфигурации, указанное *name*, не определено, возвращается `None`.15801581Если *name* – строка и не известна, возбуждается исключение [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно присутствует в `confstr_names`, возбуждается исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError) с [`errno.EINVAL`](https://python-all.ru/2.7/library/errno.html#errno.EINVAL) в качестве кода ошибки.15821583Доступность: Unix15841585#### `os.confstr_names`15861587Словарь, отображающий имена, принимаемые [`confstr()`](https://python-all.ru/2.7/library/os.html#os.confstr), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.15881589Доступность: Unix.15901591#### `os.getloadavg()`15921593Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает исключение [`OSError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.OSError), если среднюю нагрузку получить не удалось.15941595Доступность: Unix.15961597Новое в версии 2.3.15981599#### `os.sysconf(name)`16001601Возвращает целочисленные значения системной конфигурации. Если значение конфигурации, указанное *name*, не определено, возвращается `-1`. Замечания относительно параметра *name* для [`confstr()`](https://python-all.ru/2.7/library/os.html#os.confstr) применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся `sysconf_names`.16021603Доступность: Unix.16041605#### `os.sysconf_names`16061607Словарь, отображающий имена, принимаемые [`sysconf()`](https://python-all.ru/2.7/library/os.html#os.sysconf), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.16081609Доступность: Unix.16101611Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.16121613Операции более высокого уровня с именами путей определены в модуле [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16141615#### `os.curdir`16161617Строковая константа, используемая операционной системой для обращения к текущему каталогу. Для Windows и POSIX это `'.'`. Также доступна через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16181619#### `os.pardir`16201621Строковая константа, используемая операционной системой для обращения к родительскому каталогу. Для Windows и POSIX это `'..'`. Также доступна через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16221623#### `os.sep`16241625Символ, используемый операционной системой для разделения компонентов пути. Для POSIX это `'/'`, а для Windows – `'\\'`. Имейте в виду, что одного знания этого символа недостаточно для разбора или объединения путей – используйте [`os.path.split()`](https://python-all.ru/2.7/library/os.path.html#os.path.split) и [`os.path.join()`](https://python-all.ru/2.7/library/os.path.html#os.path.join), – но иногда это бывает полезно. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16261627#### `os.altsep`16281629Альтернативный символ, используемый операционной системой для разделения компонентов пути, или `None`, если существует только один символ-разделитель. В Windows, где `sep` – обратная косая черта, этот символ равен `'/'`. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16301631#### `os.extsep`16321633Символ, отделяющий основное имя файла от расширения; например, `'.'` в `os.py`. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16341635Новое в версии 2.2.16361637#### `os.pathsep`16381639Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в `PATH`), например `':'` для POSIX или `';'` для Windows. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16401641#### `os.defpath`16421643Путь поиска по умолчанию, используемый [`exec*p*`](https://python-all.ru/2.7/library/os.html#os.execl) и [`spawn*p*`](https://python-all.ru/2.7/library/os.html#os.spawnl), если в окружении нет ключа `'PATH'`. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16441645#### `os.linesep`16461647Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например `'\n'` для POSIX, или несколько символов, например `'\r\n'` для Windows. Не используйте *os.linesep* в качестве символа конца строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте одиночный `'\n'` на всех платформах.16481649#### `os.devnull`16501651Путь к нулевому устройству. Например: `'/dev/null'` для POSIX, `'nul'` для Windows. Также доступен через [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path).16521653Новое в версии 2.4.16541655## 15.1.7. Разные функции16561657#### `os.urandom(n)`16581659Возвращает строку из *n* случайных байтов, пригодных для криптографического использования.16601661Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В UNIX-подобных системах она обращается к `/dev/urandom`, а в Windows использует `CryptGenRandom()`. Если источник случайности не найден, возбуждается [`NotImplementedError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.NotImplementedError).16621663Для удобного интерфейса к генератору случайных чисел, предоставляемому платформой, обратитесь к [`random.SystemRandom`](https://python-all.ru/2.7/library/random.html#random.SystemRandom).16641665Новое в версии 2.4.1666