os.md
1> **Источник:** https://python-all.ru/3.0/library/os.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# `os` – Разные интерфейсы операционной системы89Этот модуль предоставляет переносимый способ использования функциональности, зависящей от операционной системы. Если нужно просто прочитать или записать файл, см. [`open()`](https://python-all.ru/3.0/library/functions.html#open); для работы с путями предназначен модуль [`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path); а если нужно прочитать все строки из всех файлов, указанных в командной строке – модуль [`fileinput`](https://python-all.ru/3.0/library/fileinput.html#module-fileinput). Для создания временных файлов и каталогов предназначен модуль [`tempfile`](https://python-all.ru/3.0/library/tempfile.html#module-tempfile), а для высокоуровневой работы с файлами и каталогами – модуль [`shutil`](https://python-all.ru/3.0/library/shutil.html#module-shutil).1011Все встроенные модули Python, зависящие от операционной системы, устроены так, что одинаковая функциональность предоставляется через единый интерфейс; например, функция `os.stat(path)` возвращает информацию о состоянии *path* в одном и том же формате (который, кстати, берёт начало от интерфейса POSIX).1213Расширения, характерные для конкретной операционной системы, также доступны через модуль `os`, однако их использование, конечно, угрожает переносимости!1415> **Примечание**16>17> Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.1819> **Примечание**20>21> Если не указано иное, все функции, для которых указано «Доступность: Unix», поддерживаются на Mac OS X, построенной на ядре Unix.2223> **Примечание**24>25> Все функции этого модуля возбуждают исключение [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError) в случае некорректных или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.2627#### `[os.error]exception os.error`2829Псевдоним встроенного исключения3031[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)3233.3435#### `[os.name]os.name`3637Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена:3839`'posix'`4041,4243`'nt'`4445,4647`'mac'`4849,5051`'os2'`5253,5455`'ce'`5657,5859`'java'`6061.6263#### `[os.path]os.path`6465Соответствующий стандартный модуль, зависящий от операционной системы, для операций с путями, такой как6667`posixpath`6869или7071`ntpath`7273. Таким образом, при правильном импорте7475`os.path.split(file)`7677эквивалентно, но более переносимо, чем7879`posixpath.split(file)`8081. Обратите внимание, что это также импортируемый модуль: его можно импортировать напрямую как8283[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)8485.8687## Параметры процесса8889Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.9091#### `[os.environ]os.environ`9293Объект отображения, представляющий строковое окружение. Например, `environ['HOME']` – это путь к домашнему каталогу (на некоторых платформах), и эквивалентен `getenv("HOME")` в C.9495Это отображение фиксируется при первом импорте модуля `os`, обычно во время запуска Python в рамках обработки `site.py`. Изменения окружения, сделанные после этого момента, не отражаются в `os.environ`, за исключением изменений, сделанных путём непосредственного изменения `os.environ`.9697Если платформа поддерживает функцию [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv), это отображение может использоваться как для изменения, так и для запроса окружения. [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv) будет вызываться автоматически при изменении отображения.9899> **Примечание**100>101> Прямой вызов [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv) не изменяет `os.environ`, поэтому лучше изменять `os.environ`.102103> **Примечание**104>105> На некоторых платформах, включая FreeBSD и Mac OS X, установка `environ` может вызывать утечки памяти. Обратитесь к системной документации по `putenv`.106107Если [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv) не предусмотрена, изменённая копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённое окружение.108109Если платформа поддерживает функцию [`unsetenv()`](https://python-all.ru/3.0/library/os.html#os.unsetenv), можно удалять элементы из этого отображения для снятия переменных окружения. [`unsetenv()`](https://python-all.ru/3.0/library/os.html#os.unsetenv) будет вызываться автоматически при удалении элемента из `os.environ`, а также при вызове одного из методов `pop()` или `clear()`.110111#### `os.chdir(path)`112113#### `os.fchdir(fd)`114115#### `os.getcwd()`116117Эти функции описаны в118119[*Files and Directories*](https://python-all.ru/3.0/library/os.html#os-file-dir)120121.122123#### `[os.ctermid]os.ctermid()`124125Возвращает имя файла, соответствующее управляющему терминалу процесса. Доступность: Unix.126127#### `[os.getegid]os.getegid()`128129Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» на исполняемом файле в текущем процессе. Доступность: Unix.130131#### `[os.geteuid]os.geteuid()`132133Возвращает эффективный идентификатор пользователя текущего процесса. Доступность: Unix.134135#### `[os.getgid]os.getgid()`136137Возвращает реальный идентификатор группы текущего процесса. Доступность: Unix.138139#### `[os.getgroups]os.getgroups()`140141Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом. Доступность: Unix.142143#### `[os.getlogin]os.getlogin()`144145Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей более удобно использовать переменную окружения146147**LOGNAME**148149, чтобы узнать, кто пользователь, или150151`pwd.getpwuid(os.getuid())[0]`152153, чтобы получить имя входа по текущему эффективному идентификатору пользователя. Доступность: Unix.154155#### `[os.getpgid]os.getpgid(pid)`156157Возвращает идентификатор группы процесса для процесса с идентификатором158159*pid*160161. Если162163*pid*164165равен 0, возвращается идентификатор группы текущего процесса. Доступность: Unix.166167#### `[os.getpgrp]os.getpgrp()`168169Возвращает идентификатор текущей группы процессов. Доступность: Unix.170171#### `[os.getpid]os.getpid()`172173Возвращает идентификатор текущего процесса. Доступность: Unix, Windows.174175#### `[os.getppid]os.getppid()`176177Возвращает идентификатор процесса родителя. Доступность: Unix.178179#### `[os.getuid]os.getuid()`180181Возвращает идентификатор пользователя текущего процесса. Доступность: Unix.182183#### `[os.getenv]os.getenv(varname[, value])`184185Возвращает значение переменной окружения186187*varname*188189, если она существует, или190191*value*192193, если её нет.194195*value*196197по умолчанию равен198199`None`200201. Доступность: большинство разновидностей Unix, Windows.202203#### `[os.putenv]os.putenv(varname, value)`204205Устанавливает переменную окружения с именем *varname* в строку *value*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.0/library/os.html#os.system), `popen()` или [`fork()`](https://python-all.ru/3.0/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.0/library/os.html#os.execv). Доступность: большинство разновидностей Unix, Windows.206207> **Примечание**208>209> На некоторых платформах, включая FreeBSD и Mac OS X, изменение `environ` может привести к утечкам памяти. Обратитесь к системной документации по putenv.210211Когда [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv) поддерживается, присваивания элементам `os.environ` автоматически преобразуются в соответствующие вызовы [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv); однако вызовы [`putenv()`](https://python-all.ru/3.0/library/os.html#os.putenv) не обновляют `os.environ`, так что на самом деле предпочтительнее присваивать значения элементам `os.environ`.212213#### `[os.setegid]os.setegid(egid)`214215Устанавливает эффективный идентификатор группы текущего процесса. Доступность: Unix.216217#### `[os.seteuid]os.seteuid(euid)`218219Устанавливает эффективный идентификатор пользователя текущего процесса. Доступность: Unix.220221#### `[os.setgid]os.setgid(gid)`222223Устанавливает идентификатор группы текущего процесса. Доступность: Unix.224225#### `[os.setgroups]os.setgroups(groups)`226227Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в228229*groups*230231.232233*groups*234235должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю. Доступность: Unix.236237#### `[os.setpgrp]os.setpgrp()`238239Вызывает системный вызов240241`setpgrp`242243или244245`setpgrp(0, 0)`246247в зависимости от того, какая версия реализована (если реализована). Подробнее о семантике – в документации Unix. Доступность: Unix.248249#### `[os.setpgid]os.setpgid(pid, pgrp)`250251Вызывает системный вызов252253`setpgid`254255, чтобы установить идентификатор группы процесса с идентификатором256257*pid*258259равным идентификатору группы260261*pgrp*262263. Подробнее о семантике – в документации Unix. Доступность: Unix.264265#### `[os.setreuid]os.setreuid(ruid, euid)`266267Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса. Доступность: Unix.268269#### `[os.setregid]os.setregid(rgid, egid)`270271Устанавливает реальный и эффективный идентификаторы группы текущего процесса. Доступность: Unix.272273#### `[os.getsid]os.getsid(pid)`274275Вызывает системный вызов276277`getsid`278279. Подробнее о семантике – в документации Unix. Доступность: Unix.280281#### `[os.setsid]os.setsid()`282283Вызывает системный вызов284285`setsid`286287. Подробнее о семантике – в документации Unix. Доступность: Unix.288289#### `[os.setuid]os.setuid(uid)`290291Устанавливает идентификатор пользователя текущего процесса. Доступность: Unix.292293#### `[os.strerror]os.strerror(code)`294295Возвращает сообщение об ошибке для кода ошибки из296297*code*298299. На платформах, где300301`strerror`302303возвращает304305`NULL`306307при передаче неизвестного номера ошибки, вызывается исключение308309[`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError)310311. Доступность: Unix, Windows.312313#### `[os.umask]os.umask(mask)`314315Устанавливает текущую числовую umask и возвращает предыдущую umask. Доступность: Unix, Windows.316317#### `[os.uname]os.uname()`318319Возвращает кортеж из 5 элементов, содержащий информацию, идентифицирующую текущую операционную систему. Кортеж содержит 5 строк: `(sysname, nodename, release, version, machine)`. В некоторых системах nodename усекается до 8 символов или до ведущего компонента; лучший способ получить имя хоста – [`socket.gethostname()`](https://python-all.ru/3.0/library/socket.html#socket.gethostname) или даже `socket.gethostbyaddr(socket.gethostname())`. Доступность: современные версии Unix.320321#### `[os.unsetenv]os.unsetenv(varname)`322323Удаляет переменную окружения с именем *varname*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.0/library/os.html#os.system), `popen()` или [`fork()`](https://python-all.ru/3.0/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.0/library/os.html#os.execv). Доступность: большинство версий Unix, Windows.324325Если [`unsetenv()`](https://python-all.ru/3.0/library/os.html#os.unsetenv) поддерживается, удаление элементов из `os.environ` автоматически преобразуется в соответствующий вызов [`unsetenv()`](https://python-all.ru/3.0/library/os.html#os.unsetenv); однако вызовы [`unsetenv()`](https://python-all.ru/3.0/library/os.html#os.unsetenv) не обновляют `os.environ`, поэтому на самом деле предпочтительнее удалять элементы из `os.environ`.326327## Создание файловых объектов328329Эти функции создают новые файловые объекты. (См. также [`open()`](https://python-all.ru/3.0/library/functions.html#open).)330331#### `[os.fdopen]os.fdopen(fd[, mode[, bufsize]])`332333Возвращает открытый файловый объект, связанный с файловым дескриптором *fd*. Аргументы *mode* и *bufsize* имеют то же значение, что и соответствующие аргументы встроенной функции [`open()`](https://python-all.ru/3.0/library/functions.html#open). Доступность: Unix, Windows.334335Если указан, аргумент *mode* должен начинаться с одной из букв `'r'`, `'w'` или `'a'`; в противном случае возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError).336337В Unix, когда аргумент *mode* начинается с `'a'`, на файловом дескрипторе устанавливается флаг *O\_APPEND* (который реализация `fdopen` уже делает на большинстве платформ).338339## Операции с файловыми дескрипторами340341Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.342343Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.344345#### `[os.close]os.close(fd)`346347Закрывает файловый дескриптор *fd*. Доступность: Unix, Windows.348349> **Примечание**350>351> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`open()`](https://python-all.ru/3.0/library/functions.html#open) или [`pipe()`](https://python-all.ru/3.0/library/os.html#os.pipe). Чтобы закрыть «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.0/library/functions.html#open) или `popen()` или [`fdopen()`](https://python-all.ru/3.0/library/os.html#os.fdopen), используйте его метод [`close()`](https://python-all.ru/3.0/library/os.html#os.close).352353#### `[os.closerange]os.closerange(fd_low, fd_high)`354355Закрывает все файловые дескрипторы от *fd\_low* (включительно) до *fd\_high* (не включая), игнорируя ошибки. Доступность: Unix, Windows. Эквивалентно:356357```python358for fd in xrange(fd_low, fd_high):359 try:360 os.close(fd)361 except OSError:362 pass363```364365#### `[os.device_encoding]os.device_encoding(fd)`366367Возвращает строку, описывающую кодировку устройства, связанного с368369*fd*370371, если оно подключено к терминалу; иначе возвращает372373[`None`](https://python-all.ru/3.0/library/constants.html#None)374375.376377#### `[os.dup]os.dup(fd)`378379Возвращает дубликат файлового дескриптора380381*fd*382383. Доступность: Unix, Windows.384385#### `[os.dup2]os.dup2(fd, fd2)`386387Дублирует файловый дескриптор388389*fd*390391в392393*fd2*394395, предварительно закрывая последний, если необходимо. Доступность: Unix, Windows.396397#### `[os.fchmod]os.fchmod(fd, mode)`398399Изменяет режим файла, заданного400401*fd*402403, на числовой404405*mode*406407. Смотрите документацию по408409[`chmod()`](https://python-all.ru/3.0/library/os.html#os.chmod)410411для возможных значений412413*mode*414415. Доступность: Unix.416417#### `[os.fchown]os.fchown(fd, uid, gid)`418419Изменяет идентификатор владельца и группы файла, заданного420421*fd*422423, на числовые424425*uid*426427и428429*gid*430431. Чтобы оставить один из идентификаторов без изменений, установите его в -1. Доступность: Unix.432433#### `[os.fdatasync]os.fdatasync(fd)`434435Принудительно записывает файл с файловым дескриптором436437*fd*438439на диск. Не принуждает обновление метаданных. Доступность: Unix.440441#### `[os.fpathconf]os.fpathconf(fd, name)`442443Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. *name* указывает значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для *name*. Доступность: Unix.444445Если *name* – строка и она неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно есть в `pathconf_names`, возбуждается [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError) с кодом ошибки [`errno.EINVAL`](https://python-all.ru/3.0/library/errno.html#errno.EINVAL).446447#### `[os.fstat]os.fstat(fd)`448449Возвращает статус для файлового дескриптора450451*fd*452453, как454455[`stat()`](https://python-all.ru/3.0/library/os.html#os.stat)456457. Доступность: Unix, Windows.458459#### `[os.fstatvfs]os.fstatvfs(fd)`460461Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором462463*fd*464465, как466467[`statvfs()`](https://python-all.ru/3.0/library/os.html#os.statvfs)468469. Доступность: Unix.470471#### `[os.fsync]os.fsync(fd)`472473Принудительно записывает файл с файловым дескриптором *fd* на диск. В Unix вызывает встроенную функцию `fsync`; в Windows – функцию MS `_commit`.474475Если у вас есть файловый объект Python *f*, сначала выполните `f.flush()`, а затем `os.fsync(f.fileno())`, чтобы гарантировать, что все внутренние буферы, связанные с *f*, будут записаны на диск. Доступность: Unix, Windows.476477#### `[os.ftruncate]os.ftruncate(fd, length)`478479Усекает файл, соответствующий файловому дескриптору480481*fd*482483, так чтобы его размер не превышал484485*length*486487байт. Доступность: Unix.488489#### `[os.isatty]os.isatty(fd)`490491Возвращает492493`True`494495, если файловый дескриптор496497*fd*498499открыт и подключён к устройству, подобному tty, иначе500501`False`502503. Доступность: Unix.504505#### `[os.lseek]os.lseek(fd, pos, how)`506507Устанавливает текущую позицию файлового дескриптора508509*fd*510511в позицию512513*pos*514515с модификатором516517*how*518519:520521[`SEEK_SET`](https://python-all.ru/3.0/library/os.html#os.SEEK_SET)522523или524525`0`526527– установить позицию относительно начала файла;528529[`SEEK_CUR`](https://python-all.ru/3.0/library/os.html#os.SEEK_CUR)530531или532533`1`534535– относительно текущей позиции;536537[`os.SEEK_END`](https://python-all.ru/3.0/library/os.html#os.SEEK_END)538539или540541`2`542543– относительно конца файла. Доступность: Unix, Windows.544545#### `[os.open]os.open(file, flags[, mode])`546547Открывает файл *file* и устанавливает различные флаги в соответствии с *flags*, а также, возможно, его режим в соответствии с *mode*. Режим по умолчанию *mode* – `0o777` (восьмеричный), при этом сначала маскируется текущее значение umask. Возвращает файловый дескриптор для только что открытого файла. Доступность: Unix, Windows.548549Описание значений флагов и режимов см. в документации по среде выполнения C; константы флагов (например, [`O_RDONLY`](https://python-all.ru/3.0/library/os.html#os.O_RDONLY) и [`O_WRONLY`](https://python-all.ru/3.0/library/os.html#os.O_WRONLY)) также определены в этом модуле (см. ниже).550551> **Примечание**552>553> Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования применяйте встроенную функцию [`open()`](https://python-all.ru/3.0/library/functions.html#open), которая возвращает «файловый объект» с методами [`read()`](https://python-all.ru/3.0/library/os.html#os.read) и [`write()`](https://python-all.ru/3.0/library/os.html#os.write) (и многими другими). Чтобы обернуть файловый дескриптор в «файловый объект», используйте [`fdopen()`](https://python-all.ru/3.0/library/os.html#os.fdopen).554555#### `[os.openpty]os.openpty()`556557Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов `(master, slave)` для pty и tty соответственно. Для (чуть более) переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.0/library/pty.html#module-pty). Доступность: некоторые разновидности Unix.558559#### `[os.pipe]os.pipe()`560561Создаёт канал. Возвращает пару файловых дескрипторов562563`(r, w)`564565, пригодных для чтения и записи соответственно. Доступность: Unix, Windows.566567#### `[os.read]os.read(fd, n)`568569Читает не более *n* байт из файлового дескриптора *fd*. Возвращает строку, содержащую прочитанные байты. Если достигнут конец файла, на который ссылается *fd*, возвращается пустая строка. Доступность: Unix, Windows.570571> **Примечание**572>573> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`open()`](https://python-all.ru/3.0/library/functions.html#open) или [`pipe()`](https://python-all.ru/3.0/library/os.html#os.pipe). Для чтения «файлового объекта», возвращённого встроенной функцией [`open()`](https://python-all.ru/3.0/library/functions.html#open) или `popen()`, или [`fdopen()`](https://python-all.ru/3.0/library/os.html#os.fdopen), или [`sys.stdin`](https://python-all.ru/3.0/library/sys.html#sys.stdin), используйте его методы [`read()`](https://python-all.ru/3.0/library/os.html#os.read) или `readline()`.574575#### `[os.tcgetpgrp]os.tcgetpgrp(fd)`576577Возвращает группу процессов, связанную с терминалом, заданным578579*fd*580581(открытый файловый дескриптор, возвращённый582583[`open()`](https://python-all.ru/3.0/library/functions.html#open)584585). Доступность: Unix.586587#### `[os.tcsetpgrp]os.tcsetpgrp(fd, pg)`588589Устанавливает группу процессов, связанную с терминалом, заданным590591*fd*592593(открытый файловый дескриптор, возвращённый594595[`open()`](https://python-all.ru/3.0/library/functions.html#open)596597), в598599*pg*600601. Доступность: Unix.602603#### `[os.ttyname]os.ttyname(fd)`604605Возвращает строку, указывающую терминальное устройство, связанное с файловым дескриптором606607*fd*608609. Если610611*fd*612613не связан с терминальным устройством, возбуждается исключение. Доступность: Unix.614615#### `[os.write]os.write(fd, str)`616617Записывает строку *str* в файловый дескриптор *fd*. Возвращает количество байт, фактически записанных. Доступность: Unix, Windows.618619> **Примечание**620>621> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`open()`](https://python-all.ru/3.0/library/functions.html#open) или [`pipe()`](https://python-all.ru/3.0/library/os.html#os.pipe). Для записи в «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.0/library/functions.html#open) или `popen()`, или [`fdopen()`](https://python-all.ru/3.0/library/os.html#os.fdopen), или [`sys.stdout`](https://python-all.ru/3.0/library/sys.html#sys.stdout), или [`sys.stderr`](https://python-all.ru/3.0/library/sys.html#sys.stderr), используйте его метод [`write()`](https://python-all.ru/3.0/library/os.html#os.write).622623Следующие константы являются вариантами параметра *flags* для функции [`open()`](https://python-all.ru/3.0/library/functions.html#open). Их можно комбинировать с помощью побитового оператора OR `|`. Некоторые из них доступны не на всех платформах. Описания их доступности и использования см. на странице руководства *open(2)* в Unix или на *MSDN \<http://msdn.microsoft.com/en-us/library/z0kc8e3z.aspx\>* в Windows.624625#### `[os.O_RDONLY]os.O_RDONLY`626627#### `os.O_WRONLY`628629#### `os.O_RDWR`630631#### `os.O_APPEND`632633#### `os.O_CREAT`634635#### `os.O_EXCL`636637#### `os.O_TRUNC`638639Эти константы доступны в Unix и Windows.640641#### `[os.O_DSYNC]os.O_DSYNC`642643#### `os.O_RSYNC`644645#### `os.O_SYNC`646647#### `os.O_NDELAY`648649#### `os.O_NONBLOCK`650651#### `os.O_NOCTTY`652653#### `os.O_SHLOCK`654655#### `os.O_EXLOCK`656657Эти константы доступны только в Unix.658659#### `[os.O_BINARY]os.O_BINARY`660661#### `os.O_NOINHERIT`662663#### `os.O_SHORT_LIVED`664665#### `os.O_TEMPORARY`666667#### `os.O_RANDOM`668669#### `os.O_SEQUENTIAL`670671#### `os.O_TEXT`672673Эти константы доступны только в Windows.674675#### `[os.O_ASYNC]os.O_ASYNC`676677#### `os.O_DIRECT`678679#### `os.O_DIRECTORY`680681#### `os.O_NOFOLLOW`682683#### `os.O_NOATIME`684685Эти константы – расширения GNU и отсутствуют, если не определены библиотекой C.686687#### `[os.SEEK_SET]os.SEEK_SET`688689#### `os.SEEK_CUR`690691#### `os.SEEK_END`692693Параметры функции694695[`lseek()`](https://python-all.ru/3.0/library/os.html#os.lseek)696697. Их значения: 0, 1 и 2 соответственно. Доступность: Windows, Unix.698699## Файлы и каталоги700701#### `[os.access]os.access(path, mode)`702703Используйте реальные uid/gid для проверки доступа к *path*. Обратите внимание, что большинство операций используют эффективные uid/gid, поэтому эту функцию можно использовать в среде suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к *path*. *mode* должно быть [`F_OK`](https://python-all.ru/3.0/library/os.html#os.F_OK) для проверки существования *path*, или оно может быть включающим OR одного или нескольких из [`R_OK`](https://python-all.ru/3.0/library/os.html#os.R_OK), [`W_OK`](https://python-all.ru/3.0/library/os.html#os.W_OK), и [`X_OK`](https://python-all.ru/3.0/library/os.html#os.X_OK) для проверки разрешений. Возвращает [`True`](https://python-all.ru/3.0/library/constants.html#True), если доступ разрешен, [`False`](https://python-all.ru/3.0/library/constants.html#False), если нет. Смотрите man-страницу Unix *access(2)* для дополнительной информации. Доступность: Unix, Windows.704705> **Примечание**706>707> Использование [`access()`](https://python-all.ru/3.0/library/os.html#os.access) для проверки, авторизован ли пользователь, например, для открытия файла, перед фактическим открытием с помощью [`open()`](https://python-all.ru/3.0/library/functions.html#open) создает уязвимость безопасности, потому что пользователь может использовать короткий временной интервал между проверкой и открытием файла для манипуляции им.708709> **Примечание**710>711> Операции ввода-вывода могут завершаться ошибкой, даже если [`access()`](https://python-all.ru/3.0/library/os.html#os.access) показывает, что они должны выполниться успешно, особенно для операций с сетевыми файловыми системами, семантика разрешений которых может выходить за рамки обычной POSIX-модели битов разрешений.712713#### `[os.F_OK]os.F_OK`714715Значение, которое передаётся в параметр716717*mode*718719функции720721[`access()`](https://python-all.ru/3.0/library/os.html#os.access)722723для проверки существования724725*path*726727.728729#### `[os.R_OK]os.R_OK`730731Значение, которое включается в параметр732733*mode*734735функции736737[`access()`](https://python-all.ru/3.0/library/os.html#os.access)738739для проверки доступности чтения740741*path*742743.744745#### `[os.W_OK]os.W_OK`746747Значение, которое включается в параметр748749*mode*750751функции752753[`access()`](https://python-all.ru/3.0/library/os.html#os.access)754755для проверки возможности записи756757*path*758759.760761#### `[os.X_OK]os.X_OK`762763Значение, которое включается в параметр764765*mode*766767функции768769[`access()`](https://python-all.ru/3.0/library/os.html#os.access)770771для определения, является ли772773*path*774775исполняемым.776777#### `[os.chdir]os.chdir(path)`778779Изменяет текущий рабочий каталог на *path*. Доступность: Unix, Windows.780781#### `[os.fchdir]os.fchdir(fd)`782783Изменяет текущий рабочий каталог на каталог, представленный файловым дескриптором784785*fd*786787. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл. Доступность: Unix.788789#### `[os.getcwd]os.getcwd()`790791Возвращает строку, представляющую текущий рабочий каталог. На платформах Unix эта функция может вызвать792793[`UnicodeDecodeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.UnicodeDecodeError)794795, если имя текущего каталога не может быть декодировано в кодировке файловой системы. Используйте796797[`getcwdb()`](https://python-all.ru/3.0/library/os.html#os.getcwdb)798799, если нужно, чтобы вызов никогда не завершался ошибкой. Доступность: Unix, Windows.800801#### `[os.getcwdb]os.getcwdb()`802803Возвращает байтовую строку, представляющую текущий рабочий каталог. Доступность: Unix, Windows.804805#### `[os.chflags]os.chflags(path, flags)`806807Устанавливает флаги *path* в числовое *flags*. *flags* может принимать комбинацию (побитовое ИЛИ) следующих значений (как определено в модуле [`stat`](https://python-all.ru/3.0/library/stat.html#module-stat)):808809- `UF_NODUMP`810- `UF_IMMUTABLE`811- `UF_APPEND`812- `UF_OPAQUE`813- `UF_NOUNLINK`814- `SF_ARCHIVED`815- `SF_IMMUTABLE`816- `SF_APPEND`817- `SF_NOUNLINK`818- `SF_SNAPSHOT`819820Доступность: Unix.821822#### `[os.chroot]os.chroot(path)`823824Изменяет корневую директорию текущего процесса на825826*path*827828. Доступность: Unix.829830#### `[os.chmod]os.chmod(path, mode)`831832Изменяет режим *path* на числовой *mode*. *mode* может принимать одно из следующих значений (как определено в модуле [`stat`](https://python-all.ru/3.0/library/stat.html#module-stat)) или их побитовые OR-комбинации:833834- `stat.S_ISUID`835- `stat.S_ISGID`836- `stat.S_ENFMT`837- `stat.S_ISVTX`838- `stat.S_IREAD`839- `stat.S_IWRITE`840- `stat.S_IEXEC`841- `stat.S_IRWXU`842- `stat.S_IRUSR`843- `stat.S_IWUSR`844- `stat.S_IXUSR`845- `stat.S_IRWXG`846- `stat.S_IRGRP`847- `stat.S_IWGRP`848- `stat.S_IXGRP`849- `stat.S_IRWXO`850- `stat.S_IROTH`851- `stat.S_IWOTH`852- `stat.S_IXOTH`853854Доступность: Unix, Windows.855856> **Примечание**857>858> Хотя Windows поддерживает [`chmod()`](https://python-all.ru/3.0/library/os.html#os.chmod), с её помощью можно установить только флаг «только для чтения» (с помощью констант `stat.S_IWRITE` и `stat.S_IREAD` или соответствующего целочисленного значения). Все остальные биты игнорируются.859860#### `[os.chown]os.chown(path, uid, gid)`861862Изменяет идентификаторы владельца и группы863864*path*865866на числовые867868*uid*869870и871872*gid*873874. Чтобы оставить один из идентификаторов без изменений, задайте ему значение -1. Доступность: Unix.875876#### `[os.lchflags]os.lchflags(path, flags)`877878Устанавливает флаги879880*path*881882в числовое значение883884*flags*885886, как887888[`chflags()`](https://python-all.ru/3.0/library/os.html#os.chflags)889890, но не переходит по символическим ссылкам. Доступность: Unix.891892#### `[os.lchmod]os.lchmod(path, mode)`893894Изменяет режим895896*path*897898на числовое значение899900*mode*901902. Если path является символической ссылкой, это влияет на саму ссылку, а не на целевой объект. Смотрите документацию903904[`chmod()`](https://python-all.ru/3.0/library/os.html#os.chmod)905906для возможных значений907908*mode*909910. Доступность: Unix.911912#### `[os.lchown]os.lchown(path, uid, gid)`913914Изменяет идентификаторы владельца и группы915916*path*917918на числовые919920*uid*921922и923924*gid*925926. Эта функция не переходит по символическим ссылкам. Доступность: Unix.927928#### `[os.link]os.link(src, dst)`929930Создаёт жёсткую ссылку, указывающую на931932*src*933934, с именем935936*dst*937938. Доступность: Unix.939940#### `[os.listdir]os.listdir(path)`941942Возвращает список, содержащий имена записей в каталоге, заданном *path*. Список находится в произвольном порядке. Он не включает специальные записи `'.'` и `'..'`, даже если они присутствуют в каталоге. Доступность: Unix, Windows.943944Эта функция может вызываться с аргументом типа bytes или string. В случае bytes все имена файлов будут перечислены так, как их возвращает нижележащий API. В случае string имена файлов будут декодированы с использованием кодировки файловой системы, и пропущены, если произойдёт ошибка декодирования.945946#### `[os.lstat]os.lstat(path)`947948Как949950[`stat()`](https://python-all.ru/3.0/library/os.html#os.stat)951952, но не переходит по символическим ссылкам. Это псевдоним для953954[`stat()`](https://python-all.ru/3.0/library/os.html#os.stat)955956на платформах, не поддерживающих символические ссылки, например, Windows.957958#### `[os.mkfifo]os.mkfifo(path[, mode])`959960Создаёт FIFO (именованный канал) с именем *path* и числовым режимом *mode*. Значение *mode* по умолчанию – `0o666` (восьмеричное). Текущее значение umask сначала вычитается из режима. Доступность: Unix.961962FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют, пока они не будут удалены (например, с помощью [`os.unlink()`](https://python-all.ru/3.0/library/os.html#os.unlink)). Обычно FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO на чтение, а клиент – на запись. Обратите внимание, что [`mkfifo()`](https://python-all.ru/3.0/library/os.html#os.mkfifo) не открывает FIFO – она только создаёт точку встречи.963964#### `[os.mknod]os.mknod(filename[, mode=0o600, device])`965966Создает узел файловой системы (файл, специальный файл устройства или именованный канал) с именем967968*filename*969970.971972*mode*973974определяет как права доступа, так и тип создаваемого узла, объединяя (побитовым ИЛИ) с одним из975976`stat.S_IFREG`977978,979980`stat.S_IFCHR`981982,983984`stat.S_IFBLK`985986, и987988`stat.S_IFIFO`989990(эти константы доступны в991992[`stat`](https://python-all.ru/3.0/library/stat.html#module-stat)993994). Для995996`stat.S_IFCHR`997998и9991000`stat.S_IFBLK`10011002параметр10031004*device*10051006определяет вновь создаваемый специальный файл устройства (вероятно, с помощью10071008[`os.makedev()`](https://python-all.ru/3.0/library/os.html#os.makedev)10091010), в противном случае он игнорируется.10111012#### `[os.major]os.major(device)`10131014Извлекает старший номер устройства из сырого номера устройства (обычно из поля10151016`st_dev`10171018или10191020`st_rdev`10211022из10231024`stat`10251026).10271028#### `[os.minor]os.minor(device)`10291030Извлекает младший номер устройства из сырого номера устройства (обычно из поля10311032`st_dev`10331034или10351036`st_rdev`10371038из10391040`stat`10411042).10431044#### `[os.makedev]os.makedev(major, minor)`10451046Составляет сырой номер устройства из старшего и младшего номеров устройства.10471048#### `[os.mkdir]os.mkdir(path[, mode])`10491050Создаёт каталог с именем *path* и числовым режимом доступа *mode*. Значение *mode* по умолчанию – `0o777` (восьмеричное). В некоторых системах *mode* игнорируется. Если он используется, сначала применяется маска текущего значения umask. Доступно: Unix, Windows.10511052Также можно создавать временные каталоги; см. функцию [`tempfile.mkdtemp()`](https://python-all.ru/3.0/library/tempfile.html#tempfile.mkdtemp) модуля [`tempfile`](https://python-all.ru/3.0/library/tempfile.html#module-tempfile).10531054#### `[os.makedirs]os.makedirs(path[, mode])`10551056Функция рекурсивного создания каталогов. Как и [`mkdir()`](https://python-all.ru/3.0/library/os.html#os.mkdir), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога. Вызывает исключение [`error`](https://python-all.ru/3.0/library/os.html#os.error), если конечный каталог уже существует или не может быть создан. Значение *mode* по умолчанию – `0o777` (восьмеричное). В некоторых системах *mode* игнорируется. Если он используется, сначала применяется маска текущего значения umask.10571058> **Примечание**1059>1060> [`makedirs()`](https://python-all.ru/3.0/library/os.html#os.makedirs) может работать некорректно, если в создаваемых элементах пути содержатся [`os.pardir`](https://python-all.ru/3.0/library/os.html#os.pardir).10611062Эта функция корректно обрабатывает UNC-пути.10631064#### `[os.pathconf]os.pathconf(path, name)`10651066Возвращает информацию о системной конфигурации для указанного файла. Параметр *name* определяет запрашиваемое значение конфигурации; это может быть строка, являющаяся именем определённого системного значения. Эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе, перечислены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это соответствие, также допускается передача целого числа в качестве *name*. Доступно: Unix.10671068Если *name* – строка и она неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно есть в `pathconf_names`, возбуждается [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError) с кодом ошибки [`errno.EINVAL`](https://python-all.ru/3.0/library/errno.html#errno.EINVAL).10691070#### `[os.pathconf_names]os.pathconf_names`10711072Словарь, сопоставляющий имена, принимаемые10731074[`pathconf()`](https://python-all.ru/3.0/library/os.html#os.pathconf)10751076и10771078[`fpathconf()`](https://python-all.ru/3.0/library/os.html#os.fpathconf)10791080, целочисленным значениям, определённым для этих имён операционной системой хоста. Может использоваться для определения набора имён, известных системе. Доступность: Unix.10811082#### `[os.readlink]os.readlink(path)`10831084Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результатом может быть как абсолютный, так и относительный путь; если он относительный, его можно преобразовать в абсолютный с помощью `os.path.join(os.path.dirname(path), result)`.10851086Если *path* является строковым объектом, результат тоже будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если *path* является объектом bytes, результат будет объектом bytes.10871088Доступность: Unix.10891090#### `[os.remove]os.remove(path)`10911092Удаляет файл10931094*path*10951096. Если10971098*path*10991100является каталогом, вызывается исключение11011102[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)11031104; для удаления каталога используйте11051106[`rmdir()`](https://python-all.ru/3.0/library/os.html#os.rmdir)11071108. Эта функция идентична11091110[`unlink()`](https://python-all.ru/3.0/library/os.html#os.unlink)11111112, описанной ниже. В Windows попытка удалить занятый файл приводит к возникновению исключения; в Unix запись каталога удаляется, но выделенное файлу место не освобождается, пока исходный файл не перестанет использоваться. Доступно: Unix, Windows.11131114#### `[os.removedirs]os.removedirs(path)`11151116Удаляет каталоги рекурсивно. Работает как [`rmdir()`](https://python-all.ru/3.0/library/os.html#os.rmdir), за исключением того, что после успешного удаления конечного каталога [`removedirs()`](https://python-all.ru/3.0/library/os.html#os.removedirs) пытается последовательно удалить все родительские каталоги, указанные в *path*, пока не возникнет ошибка (которая игнорируется, поскольку обычно означает, что родительский каталог не пуст). Например, `os.removedirs('foo/bar/baz')` сначала удалит каталог `'foo/bar/baz'`, а затем удалит `'foo/bar'` и `'foo'`, если они пусты. Возбуждается [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError), если конечный каталог не удалось удалить.11171118#### `[os.rename]os.rename(src, dst)`11191120Переименовывает файл или каталог11211122*src*11231124в11251126*dst*11271128. Если11291130*dst*11311132является каталогом, будет вызвано исключение11331134[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)11351136. В Unix, если11371138*dst*11391140существует и является файлом, он будет бесшумно заменён при наличии у пользователя соответствующих прав. В некоторых версиях Unix операция может завершиться ошибкой, если11411142*src*11431144и11451146*dst*11471148находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если11491150*dst*11511152уже существует, будет вызвано исключение11531154[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)11551156, даже если это файл; атомарное переименование может быть невозможно, когда11571158*dst*11591160указывает на существующий файл. Доступно: Unix, Windows.11611162#### `[os.renames]os.renames(old, new)`11631164Рекурсивная функция переименования каталогов или файлов. Работает как [`rename()`](https://python-all.ru/3.0/library/os.html#os.rename), но сначала пытается создать все промежуточные каталоги, необходимые для правильного нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, удаляются с помощью [`removedirs()`](https://python-all.ru/3.0/library/os.html#os.removedirs).11651166> **Примечание**1167>1168> Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.11691170#### `[os.rmdir]os.rmdir(path)`11711172Удаляет каталог11731174*path*11751176. Доступно: Unix, Windows.11771178#### `[os.stat]os.stat(path)`11791180Выполняет системный вызов `stat` для указанного пути. Возвращаемое значение – объект, атрибуты которого соответствуют полям структуры `stat`, а именно: `st_mode` (биты защиты), `st_ino` (номер inode), `st_dev` (устройство), `st_nlink` (количество жёстких ссылок), `st_uid` (идентификатор пользователя-владельца), `st_gid` (идентификатор группы-владельца), `st_size` (размер файла в байтах), `st_atime` (время последнего доступа), `st_mtime` (время последнего изменения содержимого), `st_ctime` (зависит от платформы; время последнего изменения метаданных в Unix или время создания в Windows):11811182```python1183>>> import os1184>>> statinfo = os.stat('somefile.txt')1185>>> statinfo1186(33188, 422511L, 769L, 1, 1032, 100, 926L, 1105022698,1105022732, 1105022732)1187>>> statinfo.st_size1188926L1189>>>1190```11911192В некоторых системах Unix (например, Linux) также могут быть доступны следующие атрибуты: `st_blocks` (количество блоков, выделенных для файла), `st_blksize` (размер блока файловой системы), `st_rdev` (тип устройства, если inode является устройством). `st_flags` (определяемые пользователем флаги для файла).11931194В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться только при попытке их использования от root): `st_gen` (номер поколения файла), `st_birthtime` (время создания файла).11951196В системах Mac OS также могут быть доступны следующие атрибуты: `st_rsize`, `st_creator`, `st_type`.11971198Для обратной совместимости возвращаемое значение [`stat()`](https://python-all.ru/3.0/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`. Некоторые реализации могут добавлять в конец дополнительные элементы. Стандартный модуль [`stat`](https://python-all.ru/3.0/library/stat.html#module-stat) определяет функции и константы, полезные для извлечения информации из структуры `stat`. (В Windows некоторые поля заполняются фиктивными значениями.)11991200> **Примечание**1201>1202> Точное значение и разрешение членов `st_atime`, `st_mtime` и `st_ctime` зависят от операционной системы и файловой системы. Например, в системах Windows с файловыми системами FAT или FAT32 `st_mtime` имеет разрешение 2 секунды, а `st_atime` – всего 1 день. Подробнее см. в документации вашей операционной системы.12031204Доступность: Unix, Windows.12051206#### `[os.stat_float_times]os.stat_float_times([newvalue])`12071208Определяет, представляет ли `stat_result` временные метки в виде чисел с плавающей запятой. Если *newvalue* равен `True`, последующие вызовы [`stat()`](https://python-all.ru/3.0/library/os.html#os.stat) возвращают числа с плавающей запятой; если `False` – целые числа. Если *newvalue* опущен, возвращается текущая настройка.12091210Для совместимости со старыми версиями Python доступ к `stat_result` в виде кортежа всегда возвращает целые числа.12111212Python теперь по умолчанию возвращает значения float. Приложения, которые некорректно работают с вещественными временными метками, могут использовать эту функцию для восстановления старого поведения.12131214Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только секундное разрешение; на таких системах дробная часть всегда будет равна нулю.12151216Рекомендуется изменять этот параметр только во время запуска программы в модуле *\_\_main\_\_*; библиотеки никогда не должны изменять этот параметр. Если приложение использует библиотеку, которая некорректно работает при обработке вещественных временных меток, этому приложению следует отключить эту возможность до тех пор, пока библиотека не будет исправлена.12171218#### `[os.statvfs]os.statvfs(path)`12191220Выполняет системный вызов12211222`statvfs`12231224для указанного пути. Возвращаемое значение – объект, атрибуты которого описывают файловую систему по указанному пути и соответствуют полям структуры12251226`statvfs`12271228, а именно:12291230`f_bsize`12311232,12331234`f_frsize`12351236,12371238`f_blocks`12391240,12411242`f_bfree`12431244,12451246`f_bavail`12471248,12491250`f_files`12511252,12531254`f_ffree`12551256,12571258`f_favail`12591260,12611262`f_flag`12631264,12651266`f_namemax`12671268. Доступно: Unix.12691270#### `[os.symlink]os.symlink(src, dst)`12711272Создаёт символическую ссылку, указывающую на12731274*src*12751276, с именем12771278*dst*12791280. Доступно: Unix.12811282#### `[os.unlink]os.unlink(path)`12831284Удаляет файл12851286*path*12871288. Это та же функция, что и12891290[`remove()`](https://python-all.ru/3.0/library/os.html#os.remove)12911292; имя12931294[`unlink()`](https://python-all.ru/3.0/library/os.html#os.unlink)12951296– это её традиционное название в Unix. Доступно: Unix, Windows.12971298#### `[os.utime]os.utime(path, times)`12991300Устанавливает время доступа и время изменения файла, указанного в *path*. Если *times* равно `None`, то время доступа и изменения файла устанавливаются в текущее время. (Эффект аналогичен запуску Unix-программы **touch** для данного пути.) В противном случае *times* должен быть кортежем из двух чисел вида `(atime, mtime)`, который используется для установки времени доступа и изменения соответственно. Можно ли передать каталог в качестве *path*, зависит от того, реализует ли операционная система каталоги как файлы (например, в Windows – нет). Обратите внимание, что установленные здесь точные времена могут не вернуться при последующем вызове [`stat()`](https://python-all.ru/3.0/library/os.html#os.stat) из-за разрешающей способности, с которой ваша операционная система записывает время доступа и изменения; см. [`stat()`](https://python-all.ru/3.0/library/os.html#os.stat).13011302Доступность: Unix, Windows.13031304#### `[os.walk]os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])`13051306Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге *top* (включая сам *top*) он возвращает кортеж из трёх элементов `(dirpath, dirnames, filenames)`.13071308*dirpath* – строка, путь к каталогу. *dirnames* – список имён подкаталогов в *dirpath* (за исключением `'.'` и `'..'`). *filenames* – список имён файлов, не являющихся каталогами, в *dirpath*. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с *top*) к файлу или каталогу в *dirpath*, выполните `os.path.join(dirpath, name)`.13091310Если необязательный аргумент *topdown* равен `True` или не указан, тройка для каталога генерируется до троек для любых его подкаталогов (каталоги обходятся сверху вниз). Если *topdown* равен `False`, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх).13111312Когда *topdown* равен `True`, вызывающий код может изменить список *dirnames* на месте (например, с помощью [`del`](https://python-all.ru/3.0/reference/simple_stmts.html#del) или срезного присваивания), и [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) будет рекурсивно обходить только те подкаталоги, чьи имена остались в *dirnames*; это можно использовать для сокращения поиска, задания определённого порядка обхода или даже для информирования [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) о каталогах, которые вызывающий код создаёт или переименовывает до того, как [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) возобновит работу. Изменение *dirnames*, когда *topdown* равен `False`, неэффективно, потому что в режиме обхода снизу вверх каталоги в *dirnames* генерируются до того, как генерируется сам *dirpath*.13131314По умолчанию ошибки вызова [`listdir()`](https://python-all.ru/3.0/library/os.html#os.listdir) игнорируются. Если указан необязательный аргумент *onerror*, это должна быть функция; она будет вызвана с одним аргументом – экземпляром [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError). Эта функция может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Имейте в виду, что имя файла доступно как атрибут `filename` объекта исключения.13151316По умолчанию [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) не будет спускаться по символическим ссылкам, ведущим к каталогам. Установите *followlinks* в `True`, чтобы посещать каталоги, на которые указывают символические ссылки, в системах, поддерживающих их.13171318> **Примечание**1319>1320> Имейте в виду, что установка *followlinks* в значение `True` может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) не отслеживает уже посещённые каталоги.13211322> **Примечание**1323>1324> Если вы передаёте относительное имя пути, не меняйте текущий рабочий каталог между возобновлениями [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk). [`walk()`](https://python-all.ru/3.0/library/os.html#os.walk) никогда не меняет текущий каталог и предполагает, что вызывающий код тоже его не меняет.13251326В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:13271328```python1329import os1330from os.path import join, getsize1331for root, dirs, files in os.walk('python/Lib/email'):1332 print(root, "consumes", end=" ")1333 print(sum(getsize(join(root, name)) for name in files), end=" ")1334 print("bytes in", len(files), "non-directory files")1335 if 'CVS' in dirs:1336 dirs.remove('CVS') # не заходить в CVS-каталоги1337```13381339В следующем примере обход дерева снизу вверх обязателен: [`rmdir()`](https://python-all.ru/3.0/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:13401341```python1342# Удалить всё, доступное из каталога с именем "top",1343# при условии отсутствия символических ссылок.1344# ВНИМАНИЕ: это опасно! Например, если top == '/', это1345# может удалить все ваши файлы на диске.1346import os1347for root, dirs, files in os.walk(top, topdown=False):1348 for name in files:1349 os.remove(os.path.join(root, name))1350 for name in dirs:1351 os.rmdir(os.path.join(root, name))1352```13531354## Управление процессами13551356Эти функции можно использовать для создания процессов и управления ими.13571358Различные функции `exec*()` принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это `argv[0]`, передаваемый в функцию `main` программы. Например, `os.execv('/bin/echo', ['foo', 'bar'])` выведет на стандартный вывод только `bar`; `foo` будет проигнорирован.13591360#### `[os.abort]os.abort()`13611362Генерирует сигнал13631364`SIGABRT`13651366для текущего процесса. В Unix по умолчанию создаётся дамп памяти; в Windows процесс немедленно возвращает код выхода13671368`3`13691370. Имейте в виду, что программы, использующие13711372[`signal.signal()`](https://python-all.ru/3.0/library/signal.html#signal.signal)13731374для регистрации обработчика13751376`SIGABRT`13771378, будут вести себя иначе. Доступность: Unix, Windows.13791380#### `[os.execl]os.execl(path, arg0, arg1, ...)`13811382#### `os.execle(path, arg0, arg1, ..., env)`13831384#### `os.execlp(file, arg0, arg1, ...)`13851386#### `os.execlpe(file, arg0, arg1, ..., env)`13871388#### `os.execv(path, args)`13891390#### `os.execve(path, args, env)`13911392#### `os.execvp(file, args)`13931394#### `os.execvpe(file, args, env)`13951396Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут возбуждаться как исключения [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError).13971398Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если на этих открытых файлах могут быть буферизованы данные, следует сбросить их с помощью `sys.stdout.flush()` или [`os.fsync()`](https://python-all.ru/3.0/library/os.html#os.fsync) перед вызовом функции `exec*()`.13991400Варианты «l» и «v» функций `exec*()` различаются способом передачи аргументов командной строки. Варианты «l», вероятно, проще всего использовать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `execl*()` . Варианты «v» хороши, когда количество параметров переменное: аргументы передаются в виде списка или кортежа в параметре *args* . В любом случае аргументы дочернего процесса должны начинаться с имени запускаемой команды, но это не является обязательным.14011402Варианты, в которых есть буква «p» ближе к концу ([`execlp()`](https://python-all.ru/3.0/library/os.html#os.execlp), [`execlpe()`](https://python-all.ru/3.0/library/os.html#os.execlpe), [`execvp()`](https://python-all.ru/3.0/library/os.html#os.execvp) и [`execvpe()`](https://python-all.ru/3.0/library/os.html#os.execvpe)), используют переменную окружения **PATH** для поиска программы *file*. Когда окружение заменяется (с помощью одного из вариантов `exec*e()`, обсуждаемых в следующем абзаце), новое окружение используется как источник переменной **PATH**. Остальные варианты – [`execl()`](https://python-all.ru/3.0/library/os.html#os.execl), [`execle()`](https://python-all.ru/3.0/library/os.html#os.execle), [`execv()`](https://python-all.ru/3.0/library/os.html#os.execv) и [`execve()`](https://python-all.ru/3.0/library/os.html#os.execve) – не используют переменную **PATH** для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.14031404Для [`execle()`](https://python-all.ru/3.0/library/os.html#os.execle), [`execlpe()`](https://python-all.ru/3.0/library/os.html#os.execlpe), [`execve()`](https://python-all.ru/3.0/library/os.html#os.execve) и [`execvpe()`](https://python-all.ru/3.0/library/os.html#os.execvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`execl()`](https://python-all.ru/3.0/library/os.html#os.execl), [`execlp()`](https://python-all.ru/3.0/library/os.html#os.execlp), [`execv()`](https://python-all.ru/3.0/library/os.html#os.execv) и [`execvp()`](https://python-all.ru/3.0/library/os.html#os.execvp) заставляют новый процесс наследовать окружение текущего процесса.14051406Доступность: Unix, Windows.14071408#### `[os._exit]os._exit(n)`14091410Выход из процесса с кодом *n*, без вызова обработчиков очистки, сброса буферов stdio и т. д. Доступность: Unix, Windows.14111412> **Примечание**1413>1414> Стандартный способ завершить программу – `sys.exit(n)`. [`_exit()`](https://python-all.ru/3.0/library/os.html#os._exit) обычно следует использовать только в дочернем процессе после [`fork()`](https://python-all.ru/3.0/library/os.html#os.fork).14151416Следующие коды возврата определены и могут использоваться с [`_exit()`](https://python-all.ru/3.0/library/os.html#os._exit), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.14171418> **Примечание**1419>1420> Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.14211422#### `[os.EX_OK]os.EX_OK`14231424Код выхода, означающий, что ошибок не возникло. Доступность: Unix.14251426#### `[os.EX_USAGE]os.EX_USAGE`14271428Код выхода, означающий, что команда была использована неправильно, например, при неверном количестве аргументов. Доступность: Unix.14291430#### `[os.EX_DATAERR]os.EX_DATAERR`14311432Код выхода, означающий, что входные данные были некорректны. Доступность: Unix.14331434#### `[os.EX_NOINPUT]os.EX_NOINPUT`14351436Код выхода, означающий, что входной файл не существует или не читается. Доступность: Unix.14371438#### `[os.EX_NOUSER]os.EX_NOUSER`14391440Код выхода, означающий, что указанный пользователь не существует. Доступность: Unix.14411442#### `[os.EX_NOHOST]os.EX_NOHOST`14431444Код выхода, означающий, что указанный хост не существует. Доступность: Unix.14451446#### `[os.EX_UNAVAILABLE]os.EX_UNAVAILABLE`14471448Код выхода, означающий, что требуемая служба недоступна. Доступность: Unix.14491450#### `[os.EX_SOFTWARE]os.EX_SOFTWARE`14511452Код выхода, означающий, что обнаружена внутренняя программная ошибка. Доступность: Unix.14531454#### `[os.EX_OSERR]os.EX_OSERR`14551456Код выхода, означающий, что обнаружена ошибка операционной системы, например, невозможность создать новый процесс или канал. Доступность: Unix.14571458#### `[os.EX_OSFILE]os.EX_OSFILE`14591460Код завершения, означающий, что системный файл не существовал, не удалось открыть или возникла ошибка другого типа. Доступно: Unix.14611462#### `[os.EX_CANTCREAT]os.EX_CANTCREAT`14631464Код завершения, означающий, что указанный пользователем выходной файл не удалось создать. Доступно: Unix.14651466#### `[os.EX_IOERR]os.EX_IOERR`14671468Код завершения, означающий, что произошла ошибка при вводе-выводе какого-либо файла. Доступно: Unix.14691470#### `[os.EX_TEMPFAIL]os.EX_TEMPFAIL`14711472Код завершения, означающий временный сбой. Это указывает на ситуацию, которая может не быть настоящей ошибкой, например, сетевое соединение, которое не удалось установить во время операции с повторными попытками. Доступно: Unix.14731474#### `[os.EX_PROTOCOL]os.EX_PROTOCOL`14751476Код завершения, означающий, что обмен по протоколу был недопустимым, некорректным или нераспознанным. Доступно: Unix.14771478#### `[os.EX_NOPERM]os.EX_NOPERM`14791480Код завершения, означающий, что недостаточно прав для выполнения операции (но не для проблем файловой системы). Доступно: Unix.14811482#### `[os.EX_CONFIG]os.EX_CONFIG`14831484Код завершения, означающий, что произошла какая-то ошибка конфигурации. Доступно: Unix.14851486#### `[os.EX_NOTFOUND]os.EX_NOTFOUND`14871488Код завершения, означающий что-то вроде «запись не найдена». Доступно: Unix.14891490#### `[os.fork]os.fork()`14911492Создаёт дочерний процесс. Возвращает `0` в дочернем процессе и идентификатор дочернего процесса в родительском. Если происходит ошибка, возбуждается [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError).14931494Обратите внимание, что некоторые платформы, включая FreeBSD \<= 6.3, Cygwin и OS/2 EMX, имеют известные проблемы при использовании fork() из потока.14951496Доступность: Unix.14971498#### `[os.forkpty]os.forkpty()`14991500Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару15011502`(pid, fd)`15031504, где15051506*pid*15071508равен15091510`0`15111512в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, а15131514*fd*15151516– файловый дескриптор главного конца псевдотерминала. Для более переносимого подхода используйте модуль15171518[`pty`](https://python-all.ru/3.0/library/pty.html#module-pty)15191520. Если происходит ошибка, вызывается15211522[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)15231524. Доступно: некоторые разновидности Unix.15251526#### `[os.kill]os.kill(pid, sig)`15271528Отправляет сигнал *sig* процессу *pid*. Константы для конкретных сигналов, доступных на данной платформе, определены в модуле [`signal`](https://python-all.ru/3.0/library/signal.html#module-signal). Доступность: Unix.15291530#### `[os.killpg]os.killpg(pgid, sig)`15311532Отправляет сигнал *sig* группе процессов *pgid*. Доступно: Unix.15331534#### `[os.nice]os.nice(increment)`15351536Добавляет15371538*increment*15391540к значению niceness процесса. Возвращает новое значение niceness. Доступно: Unix.15411542#### `[os.plock]os.plock(op)`15431544Блокирует сегменты программы в памяти. Значение15451546*op*15471548(определённое в15491550`<sys/lock.h>`15511552) определяет, какие сегменты блокируются. Доступно: Unix.15531554#### `os.popen(...)`15551556Запускает дочерние процессы и возвращает открытые каналы для взаимодействия. Эти функции описаны в разделе15571558[*Создание файловых объектов*](https://python-all.ru/3.0/library/os.html#os-newstreams)15591560.15611562#### `[os.spawnl]os.spawnl(mode, path, ...)`15631564#### `os.spawnle(mode, path, ..., env)`15651566#### `os.spawnlp(mode, file, ...)`15671568#### `os.spawnlpe(mode, file, ..., env)`15691570#### `os.spawnv(mode, path, args)`15711572#### `os.spawnve(mode, path, args, env)`15731574#### `os.spawnvp(mode, file, args)`15751576#### `os.spawnvpe(mode, file, args, env)`15771578Выполняет программу *path* в новом процессе.15791580(Обратите внимание, что модуль [`subprocess`](https://python-all.ru/3.0/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Обратите особое внимание на раздел *Replacing Older Functions with the subprocess Module* на этой странице документации.)15811582Если *mode* равен [`P_NOWAIT`](https://python-all.ru/3.0/library/os.html#os.P_NOWAIT), эта функция возвращает идентификатор нового процесса; если *mode* равен [`P_WAIT`](https://python-all.ru/3.0/library/os.html#os.P_WAIT), возвращает код завершения процесса, если он завершился нормально, или `-signal`, где *signal* – это сигнал, который убил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией [`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid).15831584Варианты «l» и «v» функций `spawn*()` различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще всего использовать, когда количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными параметрами функций `spawnl*()`. Варианты «v» удобны, когда количество параметров переменное, а аргументы передаются в виде списка или кортежа в параметре *args*. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.15851586Варианты, которые содержат вторую букву «p» ближе к концу ([`spawnlp()`](https://python-all.ru/3.0/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.0/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.0/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/3.0/library/os.html#os.spawnvpe)) используют переменную окружения **PATH** для поиска программы *file*. При замене окружения (с помощью одного из вариантов `spawn*e()`, что обсуждается в следующем абзаце), новое окружение используется как источник переменной **PATH**. Другие варианты: [`spawnl()`](https://python-all.ru/3.0/library/os.html#os.spawnl), [`spawnle()`](https://python-all.ru/3.0/library/os.html#os.spawnle), [`spawnv()`](https://python-all.ru/3.0/library/os.html#os.spawnv) и [`spawnve()`](https://python-all.ru/3.0/library/os.html#os.spawnve) не используют переменную **PATH** для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.15871588Для [`spawnle()`](https://python-all.ru/3.0/library/os.html#os.spawnle), [`spawnlpe()`](https://python-all.ru/3.0/library/os.html#os.spawnlpe), [`spawnve()`](https://python-all.ru/3.0/library/os.html#os.spawnve) и [`spawnvpe()`](https://python-all.ru/3.0/library/os.html#os.spawnvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`spawnl()`](https://python-all.ru/3.0/library/os.html#os.spawnl), [`spawnlp()`](https://python-all.ru/3.0/library/os.html#os.spawnlp), [`spawnv()`](https://python-all.ru/3.0/library/os.html#os.spawnv) и [`spawnvp()`](https://python-all.ru/3.0/library/os.html#os.spawnvp) заставляют новый процесс наследовать окружение текущего процесса.15891590В качестве примера следующие вызовы [`spawnlp()`](https://python-all.ru/3.0/library/os.html#os.spawnlp) и [`spawnvpe()`](https://python-all.ru/3.0/library/os.html#os.spawnvpe) эквивалентны:15911592```python1593import os1594os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')15951596L = ['cp', 'index.html', '/dev/null']1597os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)1598```15991600Доступность: Unix, Windows. [`spawnlp()`](https://python-all.ru/3.0/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.0/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.0/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/3.0/library/os.html#os.spawnvpe) недоступны в Windows.16011602#### `[os.P_NOWAIT]os.P_NOWAIT`16031604#### `os.P_NOWAITO`16051606Возможные значения параметра16071608*mode*16091610для семейства функций16111612`spawn*()`16131614. Если указано одно из этих значений, функции16151616`spawn*()`16171618вернут управление сразу после создания нового процесса, возвращая идентификатор процесса. Доступность: Unix, Windows.16191620#### `[os.P_WAIT]os.P_WAIT`16211622Возможное значение параметра16231624*mode*16251626для семейства функций16271628`spawn*()`16291630. Если передано16311632*mode*16331634, функции16351636`spawn*()`16371638не вернут управление до завершения нового процесса и вернут код завершения процесса, если выполнение успешно, или16391640`-signal`16411642, если процесс был убит сигналом. Доступность: Unix, Windows.16431644#### `[os.P_DETACH]os.P_DETACH`16451646#### `os.P_OVERLAY`16471648Возможные значения параметра16491650*mode*16511652для семейства функций16531654`spawn*()`16551656. Они менее переносимы, чем перечисленные выше.16571658[`P_DETACH`](https://python-all.ru/3.0/library/os.html#os.P_DETACH)16591660аналогичен16611662[`P_NOWAIT`](https://python-all.ru/3.0/library/os.html#os.P_NOWAIT)16631664, но новый процесс отсоединяется от консоли вызывающего процесса. Если используется16651666[`P_OVERLAY`](https://python-all.ru/3.0/library/os.html#os.P_OVERLAY)16671668, текущий процесс будет замещён; функция16691670`spawn*()`16711672не вернёт управление. Доступность: Windows.16731674#### `[os.startfile]os.startfile(path[, operation])`16751676Запускает файл в связанном с ним приложении.16771678Если *operation* не указан или равен `'open'`, это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде **start** из интерактивной командной оболочки: файл открывается приложением (если оно есть), связанным с его расширением.16791680Если указано другое значение *operation*, оно должно быть «командным глаголом» (command verb), определяющим, что следует сделать с файлом. Распространённые глаголы, документированные Microsoft: `'print'` и `'edit'` (используются для файлов), а также `'explore'` и `'find'` (используются для каталогов).16811682[`startfile()`](https://python-all.ru/3.0/library/os.html#os.startfile) возвращает управление сразу после запуска связанного приложения. Невозможно дождаться закрытия приложения или получить его код завершения. Параметр *path* задаётся относительно текущего каталога. Если требуется абсолютный путь, убедитесь, что первый символ не является косой чертой (`'/'`); в этом случае базовая функция Win32 `ShellExecute` не работает. Используйте функцию [`os.path.normpath()`](https://python-all.ru/3.0/library/os.path.html#os.path.normpath), чтобы гарантировать правильную кодировку пути для Win32. Доступность: Windows.16831684#### `[os.system]os.system(command)`16851686Выполняет команду (строку) в подпроцессе оболочки. Реализован вызовом стандартной C-функции `system` и имеет те же ограничения. Изменения [`os.environ`](https://python-all.ru/3.0/library/os.html#os.environ), [`sys.stdin`](https://python-all.ru/3.0/library/sys.html#sys.stdin) и т.д. не отражаются в окружении выполненной команды.16871688В Unix возвращаемое значение – это код завершения процесса, закодированный в формате, указанном для [`wait()`](https://python-all.ru/3.0/library/os.html#os.wait). Обратите внимание, что POSIX не определяет значение возвращаемого значения C-функции `system`, поэтому возвращаемое значение функции Python зависит от системы.16891690В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения *command*, заданное переменной окружения Windows **COMSPEC**: в системах с **command.com** (Windows 95, 98 и ME) это всегда `0`; в системах с **cmd.exe** (Windows NT, 2000 и XP) это код завершения выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.16911692Доступность: Unix, Windows.16931694Модуль [`subprocess`](https://python-all.ru/3.0/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование данной функции. Используйте модуль [`subprocess`](https://python-all.ru/3.0/library/subprocess.html#module-subprocess). Обратите особое внимание на раздел [*Replacing Older Functions with the subprocess Module*](https://python-all.ru/3.0/library/subprocess.html#subprocess-replacements).16951696#### `[os.times]os.times()`16971698Возвращает кортеж из 5 чисел с плавающей запятой, указывающих накопленное (процессорное или иное) время в секундах. Элементы: пользовательское время, системное время, пользовательское время дочерних процессов, системное время дочерних процессов и прошедшее реальное время с фиксированной точки в прошлом – в указанном порядке. См. страницу руководства Unix16991700*times(2)*17011702или соответствующую документацию Windows Platform API. Доступность: Unix, Windows. В Windows заполнены только первые два элемента, остальные равны нулю.17031704#### `[os.wait]os.wait()`17051706Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и код завершения: 16-битное число, младший байт которого – номер сигнала, убившего процесс, а старший байт – код завершения (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан core-файл. Доступность: Unix.17071708#### `[os.waitpid]os.waitpid(pid, options)`17091710Подробности этой функции различаются в Unix и Windows.17111712В Unix: ожидает завершения дочернего процесса с идентификатором *pid* и возвращает кортеж, содержащий его идентификатор и код завершения (закодирован так же, как для [`wait()`](https://python-all.ru/3.0/library/os.html#os.wait)). Семантика вызова зависит от значения целочисленного *options*, которое должно быть `0` для обычного режима.17131714Если *pid* больше `0`, [`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid) запрашивает информацию о состоянии для этого конкретного процесса. Если *pid* равен `0`, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если *pid* равен `-1`, запрос относится к любому дочернему процессу текущего процесса. Если *pid* меньше `-1`, состояние запрашивается для любого процесса в группе процессов `-pid` (абсолютное значение *pid*).17151716Исключение [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError) возбуждается со значением errno, когда системный вызов возвращает -1.17171718В Windows: ожидает завершения процесса, заданного дескриптором процесса *pid*, и возвращает кортеж, содержащий *pid* и его код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). *pid* меньше или равный `0` в Windows не имеет особого значения и вызывает исключение. Значение целочисленного параметра *options* не влияет на результат. *pid* может ссылаться на любой процесс с известным идентификатором, не обязательно дочерний. Функции `spawn()`, вызванные с [`P_NOWAIT`](https://python-all.ru/3.0/library/os.html#os.P_NOWAIT), возвращают подходящие дескрипторы процессов.17191720#### `[os.wait3]os.wait3([options])`17211722Аналогична17231724[`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid)17251726, за исключением того, что аргумент идентификатора процесса не задаётся, и возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см.17271728[`resource`](https://python-all.ru/3.0/library/resource.html#module-resource)17291730.17311732`getrusage()`17331734. Аргумент options такой же, как и для17351736[`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid)17371738и17391740[`wait4()`](https://python-all.ru/3.0/library/os.html#os.wait4)17411742. Доступность: Unix.17431744#### `[os.wait4]os.wait4(pid, options)`17451746Аналогична17471748[`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid)17491750, за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см.17511752[`resource`](https://python-all.ru/3.0/library/resource.html#module-resource)17531754.17551756`getrusage()`17571758. Аргументы17591760[`wait4()`](https://python-all.ru/3.0/library/os.html#os.wait4)17611762те же, что и для17631764[`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid)17651766. Доступность: Unix.17671768#### `[os.WNOHANG]os.WNOHANG`17691770Опция для17711772[`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid)17731774, позволяющая вернуться немедленно, если статус дочернего процесса недоступен. В этом случае функция возвращает17751776`(0, 0)`17771778. Доступность: Unix.17791780#### `[os.WCONTINUED]os.WCONTINUED`17811782Эта опция предписывает сообщать о дочерних процессах, если они были продолжены после остановки управления заданиями с момента последнего сообщения об их состоянии. Доступность: некоторые системы Unix.17831784#### `[os.WUNTRACED]os.WUNTRACED`17851786Эта опция предписывает сообщать о дочерних процессах, если они были остановлены, но их текущее состояние не было сообщено с момента остановки. Доступность: Unix.17871788Следующие функции принимают код статуса процесса, возвращаемый [`system()`](https://python-all.ru/3.0/library/os.html#os.system), [`wait()`](https://python-all.ru/3.0/library/os.html#os.wait) или [`waitpid()`](https://python-all.ru/3.0/library/os.html#os.waitpid) в качестве параметра. Они могут использоваться для определения состояния процесса.17891790#### `[os.WCOREDUMP]os.WCOREDUMP(status)`17911792Возвращает17931794`True`17951796, если для процесса был создан дамп памяти, иначе –17971798`False`17991800. Доступность: Unix.18011802#### `[os.WIFCONTINUED]os.WIFCONTINUED(status)`18031804Возвращает18051806`True`18071808, если процесс был продолжен после остановки управления заданиями, иначе –18091810`False`18111812. Доступность: Unix.18131814#### `[os.WIFSTOPPED]os.WIFSTOPPED(status)`18151816Возвращает18171818`True`18191820, если процесс был остановлен, иначе –18211822`False`18231824. Доступность: Unix.18251826#### `[os.WIFSIGNALED]os.WIFSIGNALED(status)`18271828Возвращает18291830`True`18311832, если процесс завершился из-за сигнала, иначе –18331834`False`18351836. Доступность: Unix.18371838#### `[os.WIFEXITED]os.WIFEXITED(status)`18391840Возвращает18411842`True`18431844, если процесс завершился с помощью системного вызова18451846*exit(2)*18471848, иначе –18491850`False`18511852. Доступность: Unix.18531854#### `[os.WEXITSTATUS]os.WEXITSTATUS(status)`18551856Если18571858`WIFEXITED(status)`18591860истинно, возвращает целочисленный параметр системного вызова18611862*exit(2)*18631864. В противном случае возвращаемое значение не имеет смысла. Доступность: Unix.18651866#### `[os.WSTOPSIG]os.WSTOPSIG(status)`18671868Возвращает сигнал, который вызвал остановку процесса. Доступность: Unix.18691870#### `[os.WTERMSIG]os.WTERMSIG(status)`18711872Возвращает сигнал, который вызвал завершение процесса. Доступность: Unix.18731874## Различная системная информация18751876#### `[os.confstr]os.confstr(name)`18771878Возвращает строковые значения системных конфигураций. *name* задаёт получаемое значение конфигурации; это может быть строка – имя определённого системного значения; эти имена определены в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы определяют также дополнительные имена. Имена, известные операционной системе, представлены в виде ключей словаря `confstr_names`. Для переменных конфигурации, отсутствующих в этом словаре, допускается передача целого числа в качестве *name*. Доступность: Unix.18791880Если значение конфигурации, указанное *name*, не определено, возвращается `None`.18811882Если *name* – строка и неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError). Если конкретное значение для *name* не поддерживается системой, даже если оно включено в `confstr_names`, возбуждается [`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError) с [`errno.EINVAL`](https://python-all.ru/3.0/library/errno.html#errno.EINVAL) в качестве кода ошибки.18831884#### `[os.confstr_names]os.confstr_names`18851886Словарь, сопоставляющий имена, принимаемые18871888[`confstr()`](https://python-all.ru/3.0/library/os.html#os.confstr)18891890, с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе. Доступность: Unix.18911892#### `[os.getloadavg]os.getloadavg()`18931894Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или вызывает18951896[`OSError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.OSError)18971898, если среднюю нагрузку получить не удалось. Доступность: Unix.18991900#### `[os.sysconf]os.sysconf(name)`19011902Возвращает целочисленные значения системных конфигураций. Если значение конфигурации, заданное19031904*name*19051906, не определено, возвращается19071908`-1`19091910. Комментарии относительно параметра19111912*name*19131914для19151916[`confstr()`](https://python-all.ru/3.0/library/os.html#os.confstr)19171918применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся19191920`sysconf_names`19211922. Доступность: Unix.19231924#### `[os.sysconf_names]os.sysconf_names`19251926Словарь, сопоставляющий имена, принимаемые19271928[`sysconf()`](https://python-all.ru/3.0/library/os.html#os.sysconf)19291930, с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе. Доступность: Unix.19311932Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.19331934Операции более высокого уровня над путями определены в модуле [`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path).19351936#### `[os.curdir]os.curdir`19371938Строковая константа, используемая операционной системой для обозначения текущего каталога. Это19391940`'.'`19411942для Windows и POSIX. Также доступна через19431944[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)19451946.19471948#### `[os.pardir]os.pardir`19491950Строковая константа, используемая операционной системой для обозначения родительского каталога. Это19511952`'..'`19531954для Windows и POSIX. Также доступна через19551956[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)19571958.19591960#### `[os.sep]os.sep`19611962Символ, используемый операционной системой для разделения компонентов пути. Это19631964`'/'`19651966для POSIX и19671968`'\\'`19691970для Windows. Обратите внимание, что знания этого недостаточно для разбора или объединения путей – используйте19711972[`os.path.split()`](https://python-all.ru/3.0/library/os.path.html#os.path.split)19731974и19751976[`os.path.join()`](https://python-all.ru/3.0/library/os.path.html#os.path.join)19771978, однако это бывает полезно. Также доступен через19791980[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)19811982.19831984#### `[os.altsep]os.altsep`19851986Альтернативный символ, используемый операционной системой для разделения компонентов пути, или19871988`None`19891990, если существует только один разделитель. Устанавливается в19911992`'/'`19931994в Windows, где19951996`sep`19971998является обратной косой чертой. Также доступен через19992000[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)20012002.20032004#### `[os.extsep]os.extsep`20052006Символ, отделяющий основное имя файла от расширения; например,20072008`'.'`20092010в20112012`os.py`20132014. Также доступен через20152016[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)20172018.20192020#### `[os.pathsep]os.pathsep`20212022Символ, обычно используемый операционной системой для разделения компонентов пути поиска (например, в20232024**PATH**20252026), такой как20272028`':'`20292030для POSIX или20312032`';'`20332034для Windows. Также доступен через20352036[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)20372038.20392040#### `[os.defpath]os.defpath`20412042Путь поиска по умолчанию, используемый20432044`exec*p*()`20452046и20472048`spawn*p*()`20492050, если в окружении отсутствует ключ20512052`'PATH'`20532054. Также доступен через20552056[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)20572058.20592060#### `[os.linesep]os.linesep`20612062Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например20632064`'\\n'`20652066для POSIX, или несколько символов, например20672068`'\\r\\n'`20692070для Windows. Не используйте20712072*os.linesep*20732074в качестве завершителя строк при записи в файлы, открытые в текстовом режиме (режим по умолчанию); вместо этого используйте одиночный20752076`'\\n'`20772078на всех платформах.20792080#### `[os.devnull]os.devnull`20812082Путь к файлу нулевого устройства. Например:20832084`'/dev/null'`20852086для POSIX. Также доступен через20872088[`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path)20892090.20912092## Разные функции20932094#### `[os.urandom]os.urandom(n)`20952096Возвращает строку из *n* случайных байтов, пригодных для криптографического использования.20972098Эта функция возвращает случайные байты из источника случайности, зависящего от ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В UNIX-подобных системах она обращается к /dev/urandom, а в Windows использует CryptGenRandom. Если источник случайности не найден, будет возбуждено исключение [`NotImplementedError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.NotImplementedError).2099