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

os.md

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

1> **Источник:** https://python-all.ru/3.4/library/os.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 16.1. [`os`](https://python-all.ru/3.4/library/os.html#module-os) – Различные интерфейсы операционной системы89Этот модуль предоставляет переносимый способ использования функциональности, зависящей от операционной системы. Если нужно просто прочитать или записать файл, см. [`open()`](https://python-all.ru/3.4/library/functions.html#open); для работы с путями предназначен модуль [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path); а если нужно прочитать все строки из всех файлов, указанных в командной строке – модуль [`fileinput`](https://python-all.ru/3.4/library/fileinput.html#module-fileinput). Для создания временных файлов и каталогов предназначен модуль [`tempfile`](https://python-all.ru/3.4/library/tempfile.html#module-tempfile), а для высокоуровневой работы с файлами и каталогами – модуль [`shutil`](https://python-all.ru/3.4/library/shutil.html#module-shutil).1011Примечания о доступности этих функций:1213- Все встроенные модули Python, зависящие от операционной системы, спроектированы так, что везде, где доступна одна и та же функциональность, используется один и тот же интерфейс. Например, функция `os.stat(path)` возвращает информацию stat о *path* в одном и том же формате (который, как оказалось, берёт начало от интерфейса POSIX).14- Расширения, характерные для конкретной операционной системы, также доступны через модуль [`os`](https://python-all.ru/3.4/library/os.html#module-os), однако их использование, конечно, угрожает переносимости.15- Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.16- Примечание «Доступность: Unix» означает, что эта функция обычно встречается в системах Unix. Оно не утверждает о её существовании в конкретной операционной системе.17- Если не указано иное, все функции, для которых указано «Доступность: Unix», поддерживаются на Mac OS X, построенной на ядре Unix.1819> **Примечание**20>21> Все функции этого модуля возбуждают исключение [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) в случае некорректных или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.2223#### `exception os.error`2425Псевдоним встроенного исключения [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).2627#### `os.name`2829Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: `'posix'`, `'nt'`, `'ce'`, `'java'`.3031> **См. также**32>33> [`sys.platform`](https://python-all.ru/3.4/library/sys.html#sys.platform) имеет более тонкую гранулярность. [`os.uname()`](https://python-all.ru/3.4/library/os.html#os.uname) возвращает информацию о версии, зависящую от системы.34>35> Модуль [`platform`](https://python-all.ru/3.4/library/platform.html#module-platform) предоставляет подробные проверки идентификационных данных системы.3637## 16.1.1. Имена файлов, аргументы командной строки и переменные окружения3839В Python имена файлов, аргументы командной строки и переменные окружения представлены строковым типом. На некоторых системах перед передачей операционной системе необходимо декодировать эти строки в байты и обратно. Python использует кодировку файловой системы для выполнения этого преобразования (см. [`sys.getfilesystemencoding()`](https://python-all.ru/3.4/library/sys.html#sys.getfilesystemencoding)).4041Изменено в версии 3.1: На некоторых системах преобразование с использованием кодировки файловой системы может завершиться неудачей. В этом случае Python использует обработчик ошибок кодирования `surrogateescape`, что означает, что нераскодируемые байты заменяются на символ Unicode U+DCxx при декодировании, а при кодировании снова преобразуются в исходный байт.4243Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может этого гарантировать, функции API могут вызывать исключения Unicode.4445## 16.1.2. Параметры процесса4647Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.4849#### `os.ctermid()`5051Возвращает имя файла, соответствующее управляющему терминалу процесса.5253Доступность: Unix.5455#### `os.environ`5657Объект [*отображения*](https://python-all.ru/3.4/glossary.html#term-mapping), представляющий строковое окружение. Например, `environ['HOME']` – это путь к домашнему каталогу (на некоторых платформах), и эквивалентно `getenv("HOME")` в C.5859Это отображение фиксируется при первом импорте модуля [`os`](https://python-all.ru/3.4/library/os.html#module-os), обычно во время запуска Python в рамках обработки `site.py`. Изменения окружения, сделанные после этого, не отражаются в `os.environ`, за исключением изменений, внесённых непосредственным изменением `os.environ`.6061Если платформа поддерживает функцию [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv), это отображение может использоваться как для изменения, так и для запроса окружения. [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv) будет вызываться автоматически при изменении отображения.6263В Unix ключи и значения используют [`sys.getfilesystemencoding()`](https://python-all.ru/3.4/library/sys.html#sys.getfilesystemencoding) и обработчик ошибок `'surrogateescape'`. Используйте [`environb`](https://python-all.ru/3.4/library/os.html#os.environb), если нужна другая кодировка.6465> **Примечание**66>67> Прямой вызов [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv) не изменяет `os.environ`, поэтому лучше изменять `os.environ`.6869> **Примечание**70>71> На некоторых платформах, включая FreeBSD и Mac OS X, установка `environ` может вызывать утечки памяти. Обратитесь к системной документации по `putenv()`.7273Если [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv) не предусмотрена, изменённая копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённое окружение.7475Если платформа поддерживает функцию [`unsetenv()`](https://python-all.ru/3.4/library/os.html#os.unsetenv), можно удалять элементы из этого отображения для снятия переменных окружения. [`unsetenv()`](https://python-all.ru/3.4/library/os.html#os.unsetenv) будет вызываться автоматически при удалении элемента из `os.environ`, а также при вызове одного из методов `pop()` или `clear()`.7677#### `os.environb`7879Байтовая версия [`environ`](https://python-all.ru/3.4/library/os.html#os.environ): объект [*отображения*](https://python-all.ru/3.4/glossary.html#term-mapping), представляющий окружение в виде байтовых строк. [`environ`](https://python-all.ru/3.4/library/os.html#os.environ) и [`environb`](https://python-all.ru/3.4/library/os.html#os.environb) синхронизируются (изменение [`environb`](https://python-all.ru/3.4/library/os.html#os.environb) обновляет [`environ`](https://python-all.ru/3.4/library/os.html#os.environ) и наоборот).8081[`environb`](https://python-all.ru/3.4/library/os.html#os.environb) доступен только если [`supports_bytes_environ`](https://python-all.ru/3.4/library/os.html#os.supports_bytes_environ) равно True.8283Новое в версии 3.2.8485#### `os.chdir(path)`8687#### `os.fchdir(fd)`8889#### `os.getcwd()`9091Эти функции описаны в [*Files and Directories*](https://python-all.ru/3.4/library/os.html#os-file-dir).9293#### `os.fsencode(filename)`9495Кодирует *filename* в кодировку файловой системы с обработчиком ошибок `'surrogateescape'` или `'strict'` в Windows; возвращает [`bytes`](https://python-all.ru/3.4/library/functions.html#bytes) без изменений.9697[`fsdecode()`](https://python-all.ru/3.4/library/os.html#os.fsdecode) – это обратная функция.9899Новое в версии 3.2.100101#### `os.fsdecode(filename)`102103Декодирует *filename* из кодировки файловой системы с обработчиком ошибок `'surrogateescape'` или `'strict'` в Windows; возвращает [`str`](https://python-all.ru/3.4/library/stdtypes.html#str) без изменений.104105[`fsencode()`](https://python-all.ru/3.4/library/os.html#os.fsencode) – это обратная функция.106107Новое в версии 3.2.108109#### `os.getenv(key, default=None)`110111Возвращает значение переменной окружения *ключ*, если она существует, или *значение по умолчанию*, если нет. *ключ*, *значение по умолчанию* и результат имеют тип str.112113В Unix ключи и значения декодируются с помощью [`sys.getfilesystemencoding()`](https://python-all.ru/3.4/library/sys.html#sys.getfilesystemencoding) и обработчика ошибок `'surrogateescape'`. Используйте [`os.getenvb()`](https://python-all.ru/3.4/library/os.html#os.getenvb), если требуется другая кодировка.114115Доступность: большинство разновидностей Unix, Windows.116117#### `os.getenvb(key, default=None)`118119Возвращает значение переменной окружения *ключ*, если она существует, или *значение по умолчанию*, если нет. *ключ*, *значение по умолчанию* и результат имеют тип bytes.120121Доступность: большинство разновидностей Unix.122123Новое в версии 3.2.124125#### `os.get_exec_path(env=None)`126127Возвращает список каталогов, в которых будет производиться поиск указанного исполняемого файла, аналогично командной оболочке, при запуске процесса. Если передан аргумент *env*, он должен быть словарём переменных окружения, в котором ищется PATH. По умолчанию, когда *env* равен None, используется [`environ`](https://python-all.ru/3.4/library/os.html#os.environ).128129Новое в версии 3.2.130131#### `os.getegid()`132133Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.134135Доступность: Unix.136137#### `os.geteuid()`138139Возвращает эффективный идентификатор пользователя текущего процесса.140141Доступность: Unix.142143#### `os.getgid()`144145Возвращает реальный идентификатор группы текущего процесса.146147Доступность: Unix.148149#### `os.getgrouplist(user, group)`150151Возвращает список идентификаторов групп, к которым принадлежит *user*. Если *group* отсутствует в списке, она добавляется; обычно *group* указывается как поле идентификатора группы из записи пароля для *user*.152153Доступность: Unix.154155Новое в версии 3.3.156157#### `os.getgroups()`158159Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.160161Доступность: Unix.162163> **Примечание**164>165> В Mac OS X поведение [`getgroups()`](https://python-all.ru/3.4/library/os.html#os.getgroups) несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания `10.5` или более ранней, [`getgroups()`](https://python-all.ru/3.4/library/os.html#os.getgroups) возвращает список эффективных идентификаторов групп, связанных с процессом текущего пользователя; этот список ограничен определяемым системой количеством записей, обычно 16, и может быть изменён вызовами [`setgroups()`](https://python-all.ru/3.4/library/os.html#os.setgroups) при наличии соответствующих привилегий. Если сборка выполнена с целевой версией развёртывания больше `10.5`, [`getgroups()`](https://python-all.ru/3.4/library/os.html#os.getgroups) возвращает текущий список доступных групп для пользователя, связанного с эффективным идентификатором пользователя процесса; этот список может меняться в течение времени жизни процесса, на него не влияют вызовы [`setgroups()`](https://python-all.ru/3.4/library/os.html#os.setgroups), и его длина не ограничена 16. Значение целевой версии развёртывания, `MACOSX_DEPLOYMENT_TARGET`, можно получить с помощью [`sysconfig.get_config_var()`](https://python-all.ru/3.4/library/sysconfig.html#sysconfig.get_config_var).166167#### `os.getlogin()`168169Возвращает имя пользователя, выполнившего вход на управляющем терминале процесса. В большинстве случаев удобнее использовать переменные окружения `LOGNAME` или `USERNAME` для определения того, кто является пользователем, или `pwd.getpwuid(os.getuid())[0]` чтобы получить имя входа текущего реального идентификатора пользователя.170171Доступность: Unix, Windows.172173#### `os.getpgid(pid)`174175Возвращает идентификатор группы процессов для процесса с идентификатором *pid*. Если *pid* равен 0, возвращается идентификатор группы текущего процесса.176177Доступность: Unix.178179#### `os.getpgrp()`180181Возвращает идентификатор текущей группы процессов.182183Доступность: Unix.184185#### `os.getpid()`186187Возвращает идентификатор текущего процесса.188189Доступность: Unix, Windows.190191#### `os.getppid()`192193Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), а в Windows – тот же самый идентификатор, который к тому моменту может быть уже занят другим процессом.194195Доступность: Unix, Windows.196197Изменено в версии 3.2: Добавлена поддержка Windows.198199#### `os.getpriority(which, who)`200201Получает приоритет планирования процесса. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.4/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.4/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.4/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для [`PRIO_PROCESS`](https://python-all.ru/3.4/library/os.html#os.PRIO_PROCESS), идентификатор группы процессов для [`PRIO_PGRP`](https://python-all.ru/3.4/library/os.html#os.PRIO_PGRP) и идентификатор пользователя для [`PRIO_USER`](https://python-all.ru/3.4/library/os.html#os.PRIO_USER)). Нулевое значение *who* обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.202203Доступность: Unix.204205Новое в версии 3.3.206207#### `os.PRIO_PROCESS`208209#### `os.PRIO_PGRP`210211#### `os.PRIO_USER`212213Параметры для функций [`getpriority()`](https://python-all.ru/3.4/library/os.html#os.getpriority) и [`setpriority()`](https://python-all.ru/3.4/library/os.html#os.setpriority).214215Доступность: Unix.216217Новое в версии 3.3.218219#### `os.getresuid()`220221Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.222223Доступность: Unix.224225Новое в версии 3.2.226227#### `os.getresgid()`228229Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.230231Доступность: Unix.232233Новое в версии 3.2.234235#### `os.getuid()`236237Возвращает реальный идентификатор пользователя текущего процесса.238239Доступность: Unix.240241#### `os.initgroups(username, gid)`242243Вызывает системную функцию initgroups() для инициализации списка доступа к группам, который включает все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.244245Доступность: Unix.246247Новое в версии 3.2.248249#### `os.putenv(key, value)`250251Устанавливает переменную окружения с именем *key* в строковое значение *value*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.4/library/os.html#os.system), [`popen()`](https://python-all.ru/3.4/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.4/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.4/library/os.html#os.execv).252253Доступность: большинство разновидностей Unix, Windows.254255> **Примечание**256>257> На некоторых платформах, включая FreeBSD и Mac OS X, изменение `environ` может привести к утечкам памяти. Обратитесь к системной документации по putenv.258259Когда [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv) поддерживается, присваивания элементам `os.environ` автоматически преобразуются в соответствующие вызовы [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv); однако вызовы [`putenv()`](https://python-all.ru/3.4/library/os.html#os.putenv) не обновляют `os.environ`, так что на самом деле предпочтительнее присваивать значения элементам `os.environ`.260261#### `os.setegid(egid)`262263Устанавливает эффективный идентификатор группы текущего процесса.264265Доступность: Unix.266267#### `os.seteuid(euid)`268269Устанавливает эффективный идентификатор пользователя текущего процесса.270271Доступность: Unix.272273#### `os.setgid(gid)`274275Устанавливает идентификатор группы текущего процесса.276277Доступность: Unix.278279#### `os.setgroups(groups)`280281Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в *groups*. *groups* должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.282283Доступность: Unix.284285> **Примечание**286>287> На Mac OS X длина *groups* не может превышать заданное системой максимальное количество идентификаторов эффективных групп, обычно 16. Обратитесь к документации по [`getgroups()`](https://python-all.ru/3.4/library/os.html#os.getgroups) в случаях, когда она может не вернуть тот же список групп, который был установлен вызовом setgroups().288289#### `os.setpgrp()`290291Вызывает системный вызов `setpgrp()` или `setpgrp(0, 0)` в зависимости от того, какая версия реализована (если таковая имеется). Обратитесь к руководству Unix за семантикой.292293Доступность: Unix.294295#### `os.setpgid(pid, pgrp)`296297Вызывает системный вызов `setpgid()`, чтобы установить идентификатор группы процесса с идентификатором *pid* в группу с идентификатором *pgrp*. Обратитесь к руководству Unix за семантикой.298299Доступность: Unix.300301#### `os.setpriority(which, who, priority)`302303Устанавливает приоритет планирования программы. Значение *which* – одно из [`PRIO_PROCESS`](https://python-all.ru/3.4/library/os.html#os.PRIO_PROCESS), [`PRIO_PGRP`](https://python-all.ru/3.4/library/os.html#os.PRIO_PGRP) или [`PRIO_USER`](https://python-all.ru/3.4/library/os.html#os.PRIO_USER), а *who* интерпретируется относительно *which* (идентификатор процесса для [`PRIO_PROCESS`](https://python-all.ru/3.4/library/os.html#os.PRIO_PROCESS), идентификатор группы процессов для [`PRIO_PGRP`](https://python-all.ru/3.4/library/os.html#os.PRIO_PGRP) и идентификатор пользователя для [`PRIO_USER`](https://python-all.ru/3.4/library/os.html#os.PRIO_USER)). Нулевое значение *who* обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. *priority* – значение в диапазоне от -20 до 19. Приоритет по умолчанию – 0; меньшие приоритеты обеспечивают более благоприятное планирование.304305Доступность: Unix306307Новое в версии 3.3.308309#### `os.setregid(rgid, egid)`310311Устанавливает реальный и эффективный идентификаторы группы текущего процесса.312313Доступность: Unix.314315#### `os.setresgid(rgid, egid, sgid)`316317Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.318319Доступность: Unix.320321Новое в версии 3.2.322323#### `os.setresuid(ruid, euid, suid)`324325Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.326327Доступность: Unix.328329Новое в версии 3.2.330331#### `os.setreuid(ruid, euid)`332333Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.334335Доступность: Unix.336337#### `os.getsid(pid)`338339Вызывает системный вызов `getsid()`. Обратитесь к руководству Unix за семантикой.340341Доступность: Unix.342343#### `os.setsid()`344345Вызывает системный вызов `setsid()`. Обратитесь к руководству Unix за семантикой.346347Доступность: Unix.348349#### `os.setuid(uid)`350351Устанавливает идентификатор пользователя текущего процесса.352353Доступность: Unix.354355#### `os.strerror(code)`356357Возвращает сообщение об ошибке, соответствующее коду ошибки в *code*. На платформах, где `strerror()` возвращает `NULL` при получении неизвестного номера ошибки, возбуждается [`ValueError`](https://python-all.ru/3.4/library/exceptions.html#ValueError).358359Доступность: Unix, Windows.360361#### `os.supports_bytes_environ`362363`True`, если собственный тип окружения в ОС – bytes (например, `False` в Windows).364365Новое в версии 3.2.366367#### `os.umask(mask)`368369Устанавливает текущую числовую umask и возвращает предыдущую umask.370371Доступность: Unix, Windows.372373#### `os.uname()`374375Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение – объект с пятью атрибутами:376377- `sysname` – имя операционной системы378- `nodename` – имя машины в сети (зависит от реализации)379- `release` – релиз операционной системы380- `version` – версия операционной системы381- `machine` – идентификатор оборудования382383Для обратной совместимости этот объект также является итерируемым, ведя себя как кортеж из пяти элементов, содержащий `sysname`, `nodename`, `release`, `version` и `machine` в указанном порядке.384385Некоторые системы обрезают `nodename` до 8 символов или до первого компонента; лучший способ получить имя хоста – [`socket.gethostname()`](https://python-all.ru/3.4/library/socket.html#socket.gethostname) или даже `socket.gethostbyaddr(socket.gethostname())`.386387Доступность: современные версии Unix.388389Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.390391#### `os.unsetenv(key)`392393Удаляет переменную окружения с именем *key*. Такие изменения окружения влияют на подпроцессы, запущенные с помощью [`os.system()`](https://python-all.ru/3.4/library/os.html#os.system), [`popen()`](https://python-all.ru/3.4/library/os.html#os.popen) или [`fork()`](https://python-all.ru/3.4/library/os.html#os.fork) и [`execv()`](https://python-all.ru/3.4/library/os.html#os.execv).394395Если [`unsetenv()`](https://python-all.ru/3.4/library/os.html#os.unsetenv) поддерживается, удаление элементов из `os.environ` автоматически преобразуется в соответствующий вызов [`unsetenv()`](https://python-all.ru/3.4/library/os.html#os.unsetenv); однако вызовы [`unsetenv()`](https://python-all.ru/3.4/library/os.html#os.unsetenv) не обновляют `os.environ`, поэтому на самом деле предпочтительнее удалять элементы из `os.environ`.396397Доступность: большинство разновидностей Unix, Windows.398399## 16.1.3. Создание файлового объекта400401Эта функция создаёт новые [*файловые объекты*](https://python-all.ru/3.4/glossary.html#term-file-object). (См. также [`open()`](https://python-all.ru/3.4/library/os.html#os.open) для открытия файловых дескрипторов.)402403#### `os.fdopen(fd, *args, **kwargs)`404405Возвращает открытый файловый объект, связанный с файловым дескриптором *fd*. Это псевдоним встроенной функции [`open()`](https://python-all.ru/3.4/library/functions.html#open) и принимает те же аргументы. Единственное отличие в том, что первый аргумент [`fdopen()`](https://python-all.ru/3.4/library/os.html#os.fdopen) всегда должен быть целым числом.406407## 16.1.4. Операции с файловыми дескрипторами408409Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.410411Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.412413Метод [`fileno()`](https://python-all.ru/3.4/library/io.html#io.IOBase.fileno) можно использовать для получения файлового дескриптора, связанного с [*файловым объектом*](https://python-all.ru/3.4/glossary.html#term-file-object) при необходимости. Обратите внимание, что использование файлового дескриптора напрямую обходит методы файлового объекта, игнорируя такие аспекты, как внутренняя буферизация данных.414415#### `os.close(fd)`416417Закрывает файловый дескриптор *fd*.418419Доступность: Unix, Windows.420421> **Примечание**422>423> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/3.4/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.4/library/os.html#os.pipe). Чтобы закрыть «файловый объект», возвращаемый встроенной функцией [`open()`](https://python-all.ru/3.4/library/functions.html#open), или [`popen()`](https://python-all.ru/3.4/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/3.4/library/os.html#os.fdopen), используйте его метод [`close()`](https://python-all.ru/3.4/library/io.html#io.IOBase.close).424425#### `os.closerange(fd_low, fd_high)`426427Закрывает все файловые дескрипторы от *fd\_low* (включительно) до *fd\_high* (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):428429```python430for fd in range(fd_low, fd_high):431    try:432        os.close(fd)433    except OSError:434        pass435```436437Доступность: Unix, Windows.438439#### `os.device_encoding(fd)`440441Возвращает строку, описывающую кодировку устройства, связанного с *fd*, если оно подключено к терминалу; иначе возвращает [`None`](https://python-all.ru/3.4/library/constants.html#None).442443#### `os.dup(fd)`444445Возвращает дубликат файлового дескриптора *fd*. Новый файловый дескриптор является [*ненаследуемым*](https://python-all.ru/3.4/library/os.html#fd-inheritance).446447В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый файловый дескриптор является [*наследуемым*](https://python-all.ru/3.4/library/os.html#fd-inheritance).448449Доступность: Unix, Windows.450451Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.452453#### `os.dup2(fd, fd2, inheritable=True)`454455Дублирует файловый дескриптор *fd* в *fd2*, предварительно закрывая последний, если необходимо. Файловый дескриптор *fd2* по умолчанию [*наследуется*](https://python-all.ru/3.4/library/os.html#fd-inheritance), или не наследуется, если *inheritable* равно `False`.456457Доступность: Unix, Windows.458459Изменено в версии 3.4: Добавлен необязательный параметр *inheritable*.460461#### `os.fchmod(fd, mode)`462463Изменяет режим файла, заданного *fd*, на числовой *mode*. См. документацию по [`chmod()`](https://python-all.ru/3.4/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(fd, mode)`.464465Доступность: Unix.466467#### `os.fchown(fd, uid, gid)`468469Изменяет идентификаторы владельца и группы файла, заданного *fd*, на числовые *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См. [`chown()`](https://python-all.ru/3.4/library/os.html#os.chown). Начиная с Python 3.3, это эквивалентно `os.chown(fd, uid, gid)`.470471Доступность: Unix.472473#### `os.fdatasync(fd)`474475Принудительная запись файла с файловым дескриптором *fd* на диск. Не принуждает к обновлению метаданных.476477Доступность: Unix.478479> **Примечание**480>481> Эта функция недоступна в MacOS.482483#### `os.fpathconf(fd, name)`484485Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. *name* определяет извлекаемое значение конфигурации; это может быть строка, являющаяся именем определённого системного значения; эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе хоста, перечислены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в это сопоставление, также допускается передача целого числа для *name*.486487Если *name* – строка и она неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.4/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно включено в `pathconf_names`, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.4/library/errno.html#errno.EINVAL) в качестве кода ошибки.488489Начиная с Python 3.3, это эквивалентно `os.pathconf(fd, name)`.490491Доступность: Unix.492493#### `os.fstat(fd)`494495Возвращает статус файлового дескриптора *fd*. Возвращает объект [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result).496497Начиная с Python 3.3, это эквивалентно `os.stat(fd)`.498499> **См. также**500>501> Функция [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat).502503Доступность: Unix, Windows.504505#### `os.fstatvfs(fd)`506507Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором *fd*, как [`statvfs()`](https://python-all.ru/3.4/library/os.html#os.statvfs). Начиная с Python 3.3, это эквивалентно `os.statvfs(fd)`.508509Доступность: Unix.510511#### `os.fsync(fd)`512513Принудительно записывает файл с файловым дескриптором *fd* на диск. В Unix вызывает нативную функцию `fsync()`; в Windows – функцию MS `_commit()`.514515Если вы работаете с буферизованным [*файловым объектом*](https://python-all.ru/3.4/glossary.html#term-file-object) Python *f*, сначала вызовите `f.flush()`, а затем `os.fsync(f.fileno())`, чтобы все внутренние буферы, связанные с *f*, были записаны на диск.516517Доступность: Unix, Windows.518519#### `os.ftruncate(fd, length)`520521Усекает файл, соответствующий файловому дескриптору *fd*, так чтобы его размер не превышал *length* байт. Начиная с Python 3.3, это эквивалентно `os.truncate(fd, length)`.522523Доступность: Unix.524525#### `os.isatty(fd)`526527Возвращает `True`, если файловый дескриптор *fd* открыт и связан с tty-подобным устройством, иначе `False`.528529#### `os.lockf(fd, cmd, len)`530531Применяет, проверяет или снимает блокировку POSIX на открытом файловом дескрипторе. *fd* – открытый файловый дескриптор. *cmd* задаёт команду: одну из [`F_LOCK`](https://python-all.ru/3.4/library/os.html#os.F_LOCK), [`F_TLOCK`](https://python-all.ru/3.4/library/os.html#os.F_TLOCK), [`F_ULOCK`](https://python-all.ru/3.4/library/os.html#os.F_ULOCK) или [`F_TEST`](https://python-all.ru/3.4/library/os.html#os.F_TEST). *len* указывает блокируемый участок файла.532533Доступность: Unix.534535Новое в версии 3.3.536537#### `os.F_LOCK`538539#### `os.F_TLOCK`540541#### `os.F_ULOCK`542543#### `os.F_TEST`544545Флаги, определяющие действие функции [`lockf()`](https://python-all.ru/3.4/library/os.html#os.lockf).546547Доступность: Unix.548549Новое в версии 3.3.550551#### `os.lseek(fd, pos, how)`552553Устанавливает текущую позицию файлового дескриптора *fd* в позицию *pos*, изменяемую параметром *how*: [`SEEK_SET`](https://python-all.ru/3.4/library/os.html#os.SEEK_SET) или `0` – позиция относительно начала файла; [`SEEK_CUR`](https://python-all.ru/3.4/library/os.html#os.SEEK_CUR) или `1` – относительно текущей позиции; [`SEEK_END`](https://python-all.ru/3.4/library/os.html#os.SEEK_END) или `2` – относительно конца файла. Возвращает новую позицию курсора в байтах от начала файла.554555Доступность: Unix, Windows.556557#### `os.SEEK_SET`558559#### `os.SEEK_CUR`560561#### `os.SEEK_END`562563Параметры функции [`lseek()`](https://python-all.ru/3.4/library/os.html#os.lseek). Их значения – 0, 1 и 2 соответственно.564565Доступность: Unix, Windows.566567Новое в версии 3.3: Некоторые операционные системы могут поддерживать дополнительные значения, такие как `os.SEEK_HOLE` или `os.SEEK_DATA`.568569#### `os.open(path, flags, mode=0o777, *, dir_fd=None)`570571Открывает файл *path* и устанавливает различные флаги в соответствии с *flags* и, возможно, его режим в соответствии с *mode*. При вычислении *mode* текущее значение umask сначала маскируется. Возвращает файловый дескриптор для вновь открытого файла. Новый файловый дескриптор [*не наследуется*](https://python-all.ru/3.4/library/os.html#fd-inheritance).572573Описание значений флагов и режимов см. в документации по среде выполнения C; константы флагов (например, [`O_RDONLY`](https://python-all.ru/3.4/library/os.html#os.O_RDONLY) и [`O_WRONLY`](https://python-all.ru/3.4/library/os.html#os.O_WRONLY)) определены в модуле [`os`](https://python-all.ru/3.4/library/os.html#module-os). В частности, в Windows для открытия файлов в двоичном режиме необходимо добавлять [`O_BINARY`](https://python-all.ru/3.4/library/os.html#os.O_BINARY).574575Эта функция поддерживает [*пути относительно файловых дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) с помощью параметра *dir\_fd*.576577Доступность: Unix, Windows.578579Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.580581> **Примечание**582>583> Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования применяйте встроенную функцию [`open()`](https://python-all.ru/3.4/library/functions.html#open), которая возвращает [*файловый объект*](https://python-all.ru/3.4/glossary.html#term-file-object) с методами `read()` и `write()` (и многими другими). Чтобы обернуть файловый дескриптор в файловый объект, используйте [`fdopen()`](https://python-all.ru/3.4/library/os.html#os.fdopen).584585Новое в версии 3.3: Аргумент *dir\_fd*.586587Следующие константы являются опциями для параметра *flags* функции [`open()`](https://python-all.ru/3.4/library/os.html#os.open). Их можно комбинировать с помощью побитового оператора ИЛИ (`|`). Некоторые из них доступны не на всех платформах. Описания доступности и использования см. в справочной странице *open(2)* в Unix или в [MSDN](https://python-all.ru/3.4/library/os.html) в Windows.588589#### `os.O_RDONLY`590591#### `os.O_WRONLY`592593#### `os.O_RDWR`594595#### `os.O_APPEND`596597#### `os.O_CREAT`598599#### `os.O_EXCL`600601#### `os.O_TRUNC`602603Эти константы доступны в Unix и Windows.604605#### `os.O_DSYNC`606607#### `os.O_RSYNC`608609#### `os.O_SYNC`610611#### `os.O_NDELAY`612613#### `os.O_NONBLOCK`614615#### `os.O_NOCTTY`616617#### `os.O_SHLOCK`618619#### `os.O_EXLOCK`620621#### `os.O_CLOEXEC`622623Эти константы доступны только в Unix.624625Изменено в версии 3.3: Добавлена константа [`O_CLOEXEC`](https://python-all.ru/3.4/library/os.html#os.O_CLOEXEC).626627#### `os.O_BINARY`628629#### `os.O_NOINHERIT`630631#### `os.O_SHORT_LIVED`632633#### `os.O_TEMPORARY`634635#### `os.O_RANDOM`636637#### `os.O_SEQUENTIAL`638639#### `os.O_TEXT`640641Эти константы доступны только в Windows.642643#### `os.O_ASYNC`644645#### `os.O_DIRECT`646647#### `os.O_DIRECTORY`648649#### `os.O_NOFOLLOW`650651#### `os.O_NOATIME`652653#### `os.O_PATH`654655#### `os.O_TMPFILE`656657Эти константы – расширения GNU и отсутствуют, если не определены библиотекой C.658659Изменено в версии 3.4: Добавлена [`O_PATH`](https://python-all.ru/3.4/library/os.html#os.O_PATH) на системах, которые её поддерживают. Добавлена [`O_TMPFILE`](https://python-all.ru/3.4/library/os.html#os.O_TMPFILE), доступна только в Linux Kernel 3.11 и новее.660661#### `os.openpty()`662663Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов `(master, slave)` для pty и tty соответственно. Новые файловые дескрипторы являются [*ненаследуемыми*](https://python-all.ru/3.4/library/os.html#fd-inheritance). Для (чуть более) переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.4/library/pty.html#module-pty).664665Доступность: некоторые разновидности Unix.666667Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.668669#### `os.pipe()`670671Создаёт канал. Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно. Новый файловый дескриптор является [*ненаследуемым*](https://python-all.ru/3.4/library/os.html#fd-inheritance).672673Доступность: Unix, Windows.674675Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.676677#### `os.pipe2(flags)`678679Создаёт канал с атомарной установкой *flags*. *flags* можно сконструировать, объединяя (OR) одно или несколько из следующих значений: [`O_NONBLOCK`](https://python-all.ru/3.4/library/os.html#os.O_NONBLOCK), [`O_CLOEXEC`](https://python-all.ru/3.4/library/os.html#os.O_CLOEXEC). Возвращает пару файловых дескрипторов `(r, w)`, пригодных для чтения и записи соответственно.680681Доступность: некоторые разновидности Unix.682683Новое в версии 3.3.684685#### `os.posix_fallocate(fd, offset, len)`686687Гарантирует, что для файла, указанного в *fd*, выделено достаточно дискового пространства, начиная с *offset* и продолжаясь на *len* байтов.688689Доступность: Unix.690691Новое в версии 3.3.692693#### `os.posix_fadvise(fd, offset, len, advice)`694695Объявляет о намерении получить доступ к данным по определённому шаблону, позволяя ядру выполнять оптимизации. Совет (advice) применяется к области файла, заданной *fd*, начиная с *offset* и продолжающейся на *len* байт. *advice* – одно из значений: [`POSIX_FADV_NORMAL`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_NORMAL), [`POSIX_FADV_SEQUENTIAL`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_SEQUENTIAL), [`POSIX_FADV_RANDOM`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_RANDOM), [`POSIX_FADV_NOREUSE`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_NOREUSE), [`POSIX_FADV_WILLNEED`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_WILLNEED) или [`POSIX_FADV_DONTNEED`](https://python-all.ru/3.4/library/os.html#os.POSIX_FADV_DONTNEED).696697Доступность: Unix.698699Новое в версии 3.3.700701#### `os.POSIX_FADV_NORMAL`702703#### `os.POSIX_FADV_SEQUENTIAL`704705#### `os.POSIX_FADV_RANDOM`706707#### `os.POSIX_FADV_NOREUSE`708709#### `os.POSIX_FADV_WILLNEED`710711#### `os.POSIX_FADV_DONTNEED`712713Флаги, которые можно использовать в *advice* в [`posix_fadvise()`](https://python-all.ru/3.4/library/os.html#os.posix_fadvise), задающие шаблон доступа, который может быть использован.714715Доступность: Unix.716717Новое в версии 3.3.718719#### `os.pread(fd, buffersize, offset)`720721Чтение из файлового дескриптора *fd* начиная с позиции *offset*. Будет прочитано до *buffersize* байт. Смещение в файле остаётся неизменным.722723Доступность: Unix.724725Новое в версии 3.3.726727#### `os.pwrite(fd, str, offset)`728729Запись *bytestring* в файловый дескриптор *fd*, начиная с *offset*, оставляя смещение в файле неизменным.730731Доступность: Unix.732733Новое в версии 3.3.734735#### `os.read(fd, n)`736737Читает не более *n* байт из файлового дескриптора *fd*. Возвращает объект bytes, содержащий прочитанные байты. Если достигнут конец файла, на который ссылается *fd*, возвращается пустой объект bytes.738739Доступность: Unix, Windows.740741> **Примечание**742>743> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому [`os.open()`](https://python-all.ru/3.4/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.4/library/os.html#os.pipe). Чтобы прочитать «файловый объект», возвращённый встроенной функцией [`open()`](https://python-all.ru/3.4/library/functions.html#open) или [`popen()`](https://python-all.ru/3.4/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/3.4/library/os.html#os.fdopen), или [`sys.stdin`](https://python-all.ru/3.4/library/sys.html#sys.stdin), используйте его методы `read()` или `readline()`.744745#### `os.sendfile(out, in, offset, count)`746747#### `os.sendfile(out, in, offset, count, [headers, ][trailers, ]flags=0)`748749Копирует *count* байт из файлового дескриптора *in* в файловый дескриптор *out*, начиная с *offset*. Возвращает количество отправленных байт. При достижении EOF возвращает 0.750751Первая форма записи функции поддерживается всеми платформами, где определена [`sendfile()`](https://python-all.ru/3.4/library/os.html#os.sendfile).752753В Linux, если *offset* задан как `None`, байты читаются из текущей позиции *in*, и позиция *in* обновляется.754755Второй случай может использоваться в Mac OS X и FreeBSD, где *headers* и *trailers* являются произвольными последовательностями буферов, которые записываются до и после записи данных из *in*. Возвращаемое значение такое же, как в первом случае.756757В Mac OS X и FreeBSD значение 0 для *count* указывает, что отправка продолжается до достижения конца *in*.758759Все платформы поддерживают сокеты в качестве файлового дескриптора *out*, а некоторые платформы также допускают другие типы (например, обычный файл, канал).760761Кроссплатформенным приложениям не следует использовать аргументы *headers*, *trailers* и *flags*.762763Доступность: Unix.764765Новое в версии 3.3.766767#### `os.SF_NODISKIO`768769#### `os.SF_MNOWAIT`770771#### `os.SF_SYNC`772773Параметры для функции [`sendfile()`](https://python-all.ru/3.4/library/os.html#os.sendfile), если реализация их поддерживает.774775Доступность: Unix.776777Новое в версии 3.3.778779#### `os.readv(fd, buffers)`780781Читает из файлового дескриптора *fd* в несколько изменяемых [*объектов, подобных байтам*](https://python-all.ru/3.4/glossary.html#term-bytes-like-object) *buffers*. [`readv()`](https://python-all.ru/3.4/library/os.html#os.readv) передаёт данные в каждый буфер, пока он не заполнится, затем переходит к следующему буферу в последовательности для хранения остатка данных. [`readv()`](https://python-all.ru/3.4/library/os.html#os.readv) возвращает общее количество прочитанных байт (которое может быть меньше общей ёмкости всех объектов).782783Доступность: Unix.784785Новое в версии 3.3.786787#### `os.tcgetpgrp(fd)`788789Возвращает группу процессов, связанную с терминалом, заданным *fd* (открытый файловый дескриптор, возвращаемый [`os.open()`](https://python-all.ru/3.4/library/os.html#os.open)).790791Доступность: Unix.792793#### `os.tcsetpgrp(fd, pg)`794795Устанавливает группу процессов, связанную с терминалом, задаваемым *fd* (открытым файловым дескриптором, возвращаемым [`os.open()`](https://python-all.ru/3.4/library/os.html#os.open)), равной *pg*.796797Доступность: Unix.798799#### `os.ttyname(fd)`800801Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором *fd*. Если *fd* не связан с терминальным устройством, возбуждается исключение.802803Доступность: Unix.804805#### `os.write(fd, str)`806807Записывает объект bytes из *str* в файловый дескриптор *fd*. Возвращает количество фактически записанных байт.808809Доступность: Unix, Windows.810811> **Примечание**812>813> Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому [`os.open()`](https://python-all.ru/3.4/library/os.html#os.open) или [`pipe()`](https://python-all.ru/3.4/library/os.html#os.pipe). Для записи в «файловый объект», возвращаемый встроенной функцией [`open()`](https://python-all.ru/3.4/library/functions.html#open) или [`popen()`](https://python-all.ru/3.4/library/os.html#os.popen), или [`fdopen()`](https://python-all.ru/3.4/library/os.html#os.fdopen), или [`sys.stdout`](https://python-all.ru/3.4/library/sys.html#sys.stdout), или [`sys.stderr`](https://python-all.ru/3.4/library/sys.html#sys.stderr), используйте его метод `write()`.814815#### `os.writev(fd, buffers)`816817Записывает содержимое *buffers* в файловый дескриптор *fd*. *buffers* должна быть последовательностью [*байтоподобных объектов*](https://python-all.ru/3.4/glossary.html#term-bytes-like-object). [`writev()`](https://python-all.ru/3.4/library/os.html#os.writev) записывает содержимое каждого объекта в файловый дескриптор и возвращает общее количество записанных байт.818819Доступность: Unix.820821Новое в версии 3.3.822823### 16.1.4.1. Определение размера терминала824825Новое в версии 3.3.826827#### `os.get_terminal_size(fd=STDOUT_FILENO)`828829Возвращает размер окна терминала в виде `(columns, lines)`, кортежа типа [`terminal_size`](https://python-all.ru/3.4/library/os.html#os.terminal_size).830831Необязательный аргумент `fd` (по умолчанию `STDOUT_FILENO`, или стандартный вывод) указывает, какой файловый дескриптор следует опрашивать.832833Если файловый дескриптор не подключён к терминалу, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).834835[`shutil.get_terminal_size()`](https://python-all.ru/3.4/library/shutil.html#shutil.get_terminal_size) – это высокоуровневая функция, которую обычно следует использовать, а `os.get_terminal_size` – низкоуровневая реализация.836837Доступность: Unix, Windows.838839#### `class os.terminal_size`840841Подкласс tuple, содержащий `(columns, lines)` размера окна терминала.842843#### `columns`844845Ширина окна терминала в символах.846847#### `lines`848849Высота окна терминала в символах.850851### 16.1.4.2. Наследование файловых дескрипторов852853Новое в версии 3.4.854855Файловый дескриптор имеет флаг «наследуемости», который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python 3.4, файловые дескрипторы, создаваемые Python, по умолчанию ненаследуемые.856857В UNIX ненаследуемые файловые дескрипторы закрываются в дочерних процессах при запуске новой программы; остальные дескрипторы наследуются.858859В Windows ненаследуемые дескрипторы и файловые дескрипторы закрываются в дочерних процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout и stderr), которые всегда наследуются. При использовании функций [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl) наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы. При использовании модуля [`подпроцесс`](https://python-all.ru/3.4/library/subprocess.html#module-subprocess) все файловые дескрипторы, кроме стандартных потоков, закрываются, а наследуемые дескрипторы наследуются только если параметр *close\_fds* равен `False`.860861#### `os.get_inheritable(fd)`862863Получает флаг «наследуемости» указанного файлового дескриптора (логическое значение).864865#### `os.set_inheritable(fd, inheritable)`866867Устанавливает флаг наследуемости для указанного файлового дескриптора.868869#### `os.get_handle_inheritable(handle)`870871Возвращает флаг наследуемости для указанного дескриптора (булево значение).872873Доступность: Windows.874875#### `os.set_handle_inheritable(handle, inheritable)`876877Устанавливает флаг наследуемости для указанного дескриптора.878879Доступность: Windows.880881## 16.1.5. Файлы и каталоги882883На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:884885- **указание файлового дескриптора:** Для некоторых функций аргумент *path* может быть не только строкой, задающей имя пути, но и файловым дескриптором. В этом случае функция будет работать с файлом, на который ссылается дескриптор. (В системах POSIX Python вызовет версию функции `f...`.)886887  Можно проверить, поддерживается ли указание *path* в качестве файлового дескриптора на вашей платформе, с помощью [`os.supports_fd`](https://python-all.ru/3.4/library/os.html#os.supports_fd). Если это не поддерживается, его использование вызовет [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).888889  Если функция также поддерживает аргументы *dir\_fd* или *follow\_symlinks*, то указывать их вместе с *path* в виде файлового дескриптора – ошибка.890891- **пути относительно дескрипторов каталогов:** Если *dir\_fd* не равен `None`, это должен быть файловый дескриптор, ссылающийся на каталог, и путь для операции должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь абсолютный, *dir\_fd* игнорируется. (В системах POSIX Python вызовет версию функции `...at` или `f...at`.)892893  Можно проверить, поддерживается ли *dir\_fd* на вашей платформе, с помощью [`os.supports_dir_fd`](https://python-all.ru/3.4/library/os.html#os.supports_dir_fd). Если это не поддерживается, его использование вызовет [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).894895- **не следовать символьным ссылкам:** Если *follow\_symlinks* равен `False`, и последний элемент пути для операции является символьной ссылкой, функция будет работать с самой символьной ссылкой, а не с файлом, на который она указывает. (В системах POSIX Python вызовет версию функции `l...`.)896897  Можно проверить, поддерживается ли *follow\_symlinks* на вашей платформе, с помощью [`os.supports_follow_symlinks`](https://python-all.ru/3.4/library/os.html#os.supports_follow_symlinks). Если это не поддерживается, его использование вызовет [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).898899#### `os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)`900901Использует реальные UID/GID для проверки доступа к *path*. Обратите внимание, что большинство операций использует эффективные UID/GID, поэтому данная процедура может использоваться в среде suid/sgid для проверки, имеет ли вызвавший пользователь указанный доступ к *path*. *mode* должен быть [`F_OK`](https://python-all.ru/3.4/library/os.html#os.F_OK) для проверки существования *path*, или это может быть логическое ИЛИ одного или нескольких из [`R_OK`](https://python-all.ru/3.4/library/os.html#os.R_OK), [`W_OK`](https://python-all.ru/3.4/library/os.html#os.W_OK) и [`X_OK`](https://python-all.ru/3.4/library/os.html#os.X_OK) для проверки прав. Возвращает [`True`](https://python-all.ru/3.4/library/constants.html#True), если доступ разрешён, [`False`](https://python-all.ru/3.4/library/constants.html#False) в противном случае. См. man-страницу Unix *access(2)* для получения дополнительной информации.902903Эта функция поддерживает [*указание путей относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) и [*отказ от следования по символьным ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).904905Если *effective\_ids* равно `True`, [`access()`](https://python-all.ru/3.4/library/os.html#os.access) будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных. *effective\_ids* может не поддерживаться на вашей платформе; можно проверить, доступен ли он, с помощью [`os.supports_effective_ids`](https://python-all.ru/3.4/library/os.html#os.supports_effective_ids). Если это не поддерживается, его использование вызовет [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).906907Доступность: Unix, Windows.908909> **Примечание**910>911> Using [`access()`](https://python-all.ru/3.4/library/os.html#os.access) to check if a user is authorized to e.g. open a file before actually doing so using [`open()`](https://python-all.ru/3.4/library/functions.html#open) creates a security hole, because the user might exploit the short time interval between checking and opening the file to manipulate it. It’s preferable to use [*EAFP*](https://python-all.ru/3.4/glossary.html#term-eafp) techniques. For example:912>913> ```python914> if os.access("myfile", os.R_OK):915>     with open("myfile") as fp:916>         return fp.read()917> return "some default data"918> ```919>920> лучше написать так:921>922> ```python923> try:924>     fp = open("myfile")925> except PermissionError:926>     return "some default data"927> else:928>     with fp:929>         return fp.read()930> ```931932> **Примечание**933>934> Операции ввода-вывода могут завершаться ошибкой, даже если [`access()`](https://python-all.ru/3.4/library/os.html#os.access) показывает, что они должны выполниться успешно, особенно для операций с сетевыми файловыми системами, семантика разрешений которых может выходить за рамки обычной POSIX-модели битов разрешений.935936Изменено в версии 3.3: Добавлены параметры *dir\_fd*, *effective\_ids* и *follow\_symlinks*.937938#### `os.F_OK`939940#### `os.R_OK`941942#### `os.W_OK`943944#### `os.X_OK`945946Значения для передачи в качестве параметра *mode* функции [`access()`](https://python-all.ru/3.4/library/os.html#os.access) для проверки существования, читаемости, записи и исполняемости *path* соответственно.947948#### `os.chdir(path)`949950Изменяет текущий рабочий каталог на *path*.951952Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd). Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.953954Доступность: Unix, Windows.955956Новое в версии 3.3: Добавлена поддержка указания *path* в качестве файлового дескриптора на некоторых платформах.957958#### `os.chflags(path, flags, *, follow_symlinks=True)`959960Устанавливает флаги *path* в числовое *flags*. *flags* может принимать комбинацию (побитовое ИЛИ) следующих значений (как определено в модуле [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat)):961962- [`stat.UF_NODUMP`](https://python-all.ru/3.4/library/stat.html#stat.UF_NODUMP)963- [`stat.UF_IMMUTABLE`](https://python-all.ru/3.4/library/stat.html#stat.UF_IMMUTABLE)964- [`stat.UF_APPEND`](https://python-all.ru/3.4/library/stat.html#stat.UF_APPEND)965- [`stat.UF_OPAQUE`](https://python-all.ru/3.4/library/stat.html#stat.UF_OPAQUE)966- [`stat.UF_NOUNLINK`](https://python-all.ru/3.4/library/stat.html#stat.UF_NOUNLINK)967- [`stat.UF_COMPRESSED`](https://python-all.ru/3.4/library/stat.html#stat.UF_COMPRESSED)968- [`stat.UF_HIDDEN`](https://python-all.ru/3.4/library/stat.html#stat.UF_HIDDEN)969- [`stat.SF_ARCHIVED`](https://python-all.ru/3.4/library/stat.html#stat.SF_ARCHIVED)970- [`stat.SF_IMMUTABLE`](https://python-all.ru/3.4/library/stat.html#stat.SF_IMMUTABLE)971- [`stat.SF_APPEND`](https://python-all.ru/3.4/library/stat.html#stat.SF_APPEND)972- [`stat.SF_NOUNLINK`](https://python-all.ru/3.4/library/stat.html#stat.SF_NOUNLINK)973- [`stat.SF_SNAPSHOT`](https://python-all.ru/3.4/library/stat.html#stat.SF_SNAPSHOT)974975Эта функция поддерживает [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).976977Доступность: Unix.978979Новое в версии 3.3: Аргумент *follow\_symlinks*.980981#### `os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)`982983Изменяет режим *path* на числовой *mode*. *mode* может принимать одно из следующих значений (как определено в модуле [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat)) или их побитовые OR-комбинации:984985- [`stat.S_ISUID`](https://python-all.ru/3.4/library/stat.html#stat.S_ISUID)986- [`stat.S_ISGID`](https://python-all.ru/3.4/library/stat.html#stat.S_ISGID)987- [`stat.S_ENFMT`](https://python-all.ru/3.4/library/stat.html#stat.S_ENFMT)988- [`stat.S_ISVTX`](https://python-all.ru/3.4/library/stat.html#stat.S_ISVTX)989- [`stat.S_IREAD`](https://python-all.ru/3.4/library/stat.html#stat.S_IREAD)990- [`stat.S_IWRITE`](https://python-all.ru/3.4/library/stat.html#stat.S_IWRITE)991- [`stat.S_IEXEC`](https://python-all.ru/3.4/library/stat.html#stat.S_IEXEC)992- [`stat.S_IRWXU`](https://python-all.ru/3.4/library/stat.html#stat.S_IRWXU)993- [`stat.S_IRUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IRUSR)994- [`stat.S_IWUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IWUSR)995- [`stat.S_IXUSR`](https://python-all.ru/3.4/library/stat.html#stat.S_IXUSR)996- [`stat.S_IRWXG`](https://python-all.ru/3.4/library/stat.html#stat.S_IRWXG)997- [`stat.S_IRGRP`](https://python-all.ru/3.4/library/stat.html#stat.S_IRGRP)998- [`stat.S_IWGRP`](https://python-all.ru/3.4/library/stat.html#stat.S_IWGRP)999- [`stat.S_IXGRP`](https://python-all.ru/3.4/library/stat.html#stat.S_IXGRP)1000- [`stat.S_IRWXO`](https://python-all.ru/3.4/library/stat.html#stat.S_IRWXO)1001- [`stat.S_IROTH`](https://python-all.ru/3.4/library/stat.html#stat.S_IROTH)1002- [`stat.S_IWOTH`](https://python-all.ru/3.4/library/stat.html#stat.S_IWOTH)1003- [`stat.S_IXOTH`](https://python-all.ru/3.4/library/stat.html#stat.S_IXOTH)10041005Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd), [*пути относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) и [*не следование по символьным ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).10061007Доступность: Unix, Windows.10081009> **Примечание**1010>1011> Хотя Windows поддерживает [`chmod()`](https://python-all.ru/3.4/library/os.html#os.chmod), с его помощью можно установить только флаг «только для чтения» (через константы `stat.S_IWRITE` и `stat.S_IREAD` или соответствующее целочисленное значение). Все остальные биты игнорируются.10121013Новое в версии 3.3: добавлена возможность указывать *path* как открытый файловый дескриптор, а также аргументы *dir\_fd* и *follow\_symlinks*.10141015#### `os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)`10161017Изменяет идентификаторы владельца и группы *path* на числовые значения *uid* и *gid*. Чтобы оставить один из идентификаторов без изменений, установите его в -1.10181019Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd), [*пути относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) и [*не следование по символьным ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).10201021См. [`shutil.chown()`](https://python-all.ru/3.4/library/shutil.html#shutil.chown) – функцию более высокого уровня, принимающую имена в дополнение к числовым идентификаторам.10221023Доступность: Unix.10241025Новое в версии 3.3: Добавлена поддержка указания открытого файлового дескриптора для *path*, а также аргументов *dir\_fd* и *follow\_symlinks*.10261027#### `os.chroot(path)`10281029Изменяет корневую директорию текущего процесса на *path*.10301031Доступность: Unix.10321033#### `os.fchdir(fd)`10341035Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором *fd*. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл. Начиная с Python 3.3, это эквивалентно `os.chdir(fd)`.10361037Доступность: Unix.10381039#### `os.getcwd()`10401041Возвращает строку, представляющую текущую рабочую директорию.10421043Доступность: Unix, Windows.10441045#### `os.getcwdb()`10461047Возвращает байтовую строку, представляющую текущую рабочую директорию.10481049Доступность: Unix, Windows.10501051#### `os.lchflags(path, flags)`10521053Устанавливает флаги *path* в числовое значение *flags*, как [`chflags()`](https://python-all.ru/3.4/library/os.html#os.chflags), но не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chflags(path, flags, follow_symlinks=False)`.10541055Доступность: Unix.10561057#### `os.lchmod(path, mode)`10581059Изменяет режим *path* на числовое значение *mode*. Если path является символической ссылкой, это изменяет саму ссылку, а не её цель. См. документацию по [`chmod()`](https://python-all.ru/3.4/library/os.html#os.chmod) для возможных значений *mode*. Начиная с Python 3.3, это эквивалентно `os.chmod(path, mode, follow_symlinks=False)`.10601061Доступность: Unix.10621063#### `os.lchown(path, uid, gid)`10641065Изменяет владельца и идентификатор группы *path* на числовые *uid* и *gid*. Эта функция не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно `os.chown(path, uid, gid, follow_symlinks=False)`.10661067Доступность: Unix.10681069#### `os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)`10701071Создаёт жёсткую ссылку, указывающую на *src*, с именем *dst*.10721073Эта функция поддерживает указание *src\_dir\_fd* и/или *dst\_dir\_fd* для задания [*путей относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd), а также [*отказ от следования символическим ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).10741075Доступность: Unix, Windows.10761077Изменено в версии 3.2: Добавлена поддержка Windows.10781079Новое в версии 3.3: Добавлены аргументы *src\_dir\_fd*, *dst\_dir\_fd* и *follow\_symlinks*.10801081#### `os.listdir(path='.')`10821083Возвращает список, содержащий имена записей в каталоге, заданном параметром *path*. Список отсортирован произвольным образом и не включает специальные записи `'.'` и `'..'`, даже если они присутствуют в каталоге.10841085*path* может быть как типа `str`, так и типа `bytes`. Если *path* имеет тип `bytes`, то возвращаемые имена файлов также будут типа `bytes`; во всех остальных случаях они будут типа `str`.10861087Эта функция также может поддерживать [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd); файловый дескриптор должен ссылаться на каталог.10881089> **Примечание**1090>1091> Для кодирования имён файлов типа `str` в `bytes` используйте [`fsencode()`](https://python-all.ru/3.4/library/os.html#os.fsencode).10921093Доступность: Unix, Windows.10941095Изменено в версии 3.2: Параметр *path* стал необязательным.10961097Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для *path*.10981099#### `os.lstat(path, *, dir_fd=None)`11001101Выполняет системный вызов, эквивалентный `lstat()`, для указанного пути. Похож на [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat), но не переходит по символическим ссылкам. Возвращает объект [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result).11021103На платформах, не поддерживающих символические ссылки, это псевдоним для [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat).11041105Начиная с Python 3.3, это эквивалентно `os.stat(path, dir_fd=dir_fd, follow_symlinks=False)`.11061107Эта функция также поддерживает [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).11081109> **См. также**1110>1111> Функция [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat).11121113Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).11141115Изменено в версии 3.3: Добавлен параметр *dir\_fd*.11161117#### `os.mkdir(path, mode=0o777, *, dir_fd=None)`11181119Создаёт каталог с именем *path* и числовым режимом *mode*.11201121На некоторых системах *mode* игнорируется. Там, где он используется, сначала вычитается текущее значение umask. Если каталог уже существует, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).11221123Эта функция также поддерживает [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).11241125Также можно создавать временные каталоги; см. функцию [`tempfile.mkdtemp()`](https://python-all.ru/3.4/library/tempfile.html#tempfile.mkdtemp) модуля [`tempfile`](https://python-all.ru/3.4/library/tempfile.html#module-tempfile).11261127Доступность: Unix, Windows.11281129Новое в версии 3.3: Аргумент *dir\_fd*.11301131#### `os.makedirs(name, mode=0o777, exist_ok=False)`11321133Функция рекурсивного создания каталогов. Работает как [`mkdir()`](https://python-all.ru/3.4/library/os.html#os.mkdir), но создаёт все промежуточные каталоги, необходимые для содержания конечного каталога.11341135По умолчанию *mode* равен `0o777` (восьмеричное). На некоторых системах *mode* игнорируется. Там, где он используется, сначала вычитается текущее значение umask.11361137Если *exist\_ok* равен `False` (по умолчанию), возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError), если целевой каталог уже существует.11381139> **Примечание**1140>1141> [`makedirs()`](https://python-all.ru/3.4/library/os.html#os.makedirs) может запутаться, если создаваемые компоненты пути содержат [`pardir`](https://python-all.ru/3.4/library/os.html#os.pardir) (например, ".." в системах UNIX).11421143Эта функция корректно обрабатывает UNC-пути.11441145Новое в версии 3.2: Параметр *exist\_ok*.11461147Изменено в версии 3.4.1: До Python 3.4.1, если *exist\_ok* было `True` и каталог существовал, [`makedirs()`](https://python-all.ru/3.4/library/os.html#os.makedirs) всё равно вызывала ошибку, если *mode* не совпадал с режимом существующего каталога. Поскольку такое поведение невозможно было безопасно реализовать, оно было удалено в Python 3.4.1. См. [issue 21082](https://python-all.ru/3.4/library/os.html).11481149#### `os.mkfifo(path, mode=0o666, *, dir_fd=None)`11501151Создаёт FIFO (именованный канал) с именем *path* и числовым режимом *mode*. Значение текущего umask сначала вычитается из режима.11521153Эта функция также поддерживает [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).11541155FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют, пока они не будут удалены (например, с помощью [`os.unlink()`](https://python-all.ru/3.4/library/os.html#os.unlink)). Обычно FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO на чтение, а клиент – на запись. Обратите внимание, что [`mkfifo()`](https://python-all.ru/3.4/library/os.html#os.mkfifo) не открывает FIFO – она только создаёт точку встречи.11561157Доступность: Unix.11581159Новое в версии 3.3: Аргумент *dir\_fd*.11601161#### `os.mknod(path, mode=0o600, device=0, *, dir_fd=None)`11621163Создаёт узел файловой системы (файл, специальный файл устройства или именованный канал) с именем *path*. *mode* задаёт как права доступа, так и тип создаваемого узла, комбинируясь (побитовое ИЛИ) с одной из констант: `stat.S_IFREG`, `stat.S_IFCHR`, `stat.S_IFBLK` и `stat.S_IFIFO` (эти константы доступны в [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat)). Для `stat.S_IFCHR` и `stat.S_IFBLK` параметр *device* определяет создаваемый специальный файл устройства (вероятно, с помощью [`os.makedev()`](https://python-all.ru/3.4/library/os.html#os.makedev)), в противном случае он игнорируется.11641165Эта функция также поддерживает [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).11661167Новое в версии 3.3: Аргумент *dir\_fd*.11681169#### `os.major(device)`11701171Извлекает старший номер устройства из сырого номера устройства (обычно из поля `st_dev` или `st_rdev` из `stat`).11721173#### `os.minor(device)`11741175Извлекает младший номер устройства из сырого номера устройства (обычно из поля `st_dev` или `st_rdev` из `stat`).11761177#### `os.makedev(major, minor)`11781179Составляет сырой номер устройства из старшего и младшего номеров устройства.11801181#### `os.pathconf(path, name)`11821183Возвращает информацию о системной конфигурации для указанного файла. *name* задаёт значение конфигурации, которое нужно получить; это может быть строка, являющаяся именем определённого системного значения; эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы определяют и дополнительные имена. Имена, известные операционной системе, перечислены в словаре `pathconf_names`. Для переменных конфигурации, не включённых в этот словарь, также можно передать целое число в *name*.11841185Если *name* – строка и она неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.4/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается хост-системой, даже если оно есть в `pathconf_names`, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) с кодом ошибки [`errno.EINVAL`](https://python-all.ru/3.4/library/errno.html#errno.EINVAL).11861187Эта функция может поддерживать [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd).11881189Доступность: Unix.11901191#### `os.pathconf_names`11921193Словарь, сопоставляющий имена, принимаемые [`pathconf()`](https://python-all.ru/3.4/library/os.html#os.pathconf) и [`fpathconf()`](https://python-all.ru/3.4/library/os.html#os.fpathconf), с целочисленными значениями, определёнными для этих имён операционной системой. Его можно использовать для определения набора имён, известных системе.11941195Доступность: Unix.11961197#### `os.readlink(path, *, dir_fd=None)`11981199Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным именем пути; если он относительный, его можно преобразовать в абсолютный с помощью `os.path.join(os.path.dirname(path), result)`.12001201Если *path* является строковым объектом, результат тоже будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если *path* является объектом bytes, результат будет объектом bytes.12021203Эта функция также поддерживает [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).12041205Доступность: Unix, Windows12061207Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).12081209Новое в версии 3.3: Аргумент *dir\_fd*.12101211#### `os.remove(path, *, dir_fd=None)`12121213Удаляет файл *path*. Если *path* является каталогом, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError). Для удаления каталогов используйте [`rmdir()`](https://python-all.ru/3.4/library/os.html#os.rmdir).12141215Эта функция может поддерживать [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).12161217В Windows попытка удалить файл, который используется, приводит к возбуждению исключения; в Unix запись в каталоге удаляется, но память, выделенная файлу, не освобождается, пока исходный файл не перестанет использоваться.12181219Эта функция идентична [`unlink()`](https://python-all.ru/3.4/library/os.html#os.unlink).12201221Доступность: Unix, Windows.12221223Новое в версии 3.3: Аргумент *dir\_fd*.12241225#### `os.removedirs(name)`12261227Удаляет каталоги рекурсивно. Работает как [`rmdir()`](https://python-all.ru/3.4/library/os.html#os.rmdir), за исключением того, что после успешного удаления конечного каталога [`removedirs()`](https://python-all.ru/3.4/library/os.html#os.removedirs) пытается последовательно удалить все родительские каталоги, указанные в *path*, пока не возникнет ошибка (которая игнорируется, поскольку обычно означает, что родительский каталог не пуст). Например, `os.removedirs('foo/bar/baz')` сначала удалит каталог `'foo/bar/baz'`, а затем удалит `'foo/bar'` и `'foo'`, если они пусты. Возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError), если конечный каталог не удалось удалить.12281229#### `os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`12301231Переименовывает файл или каталог *src* в *dst*. Если *dst* является каталогом, будет возбуждено [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError). В Unix, если *dst* существует и является файлом, он будет молча заменён, если у пользователя есть разрешение. Операция может завершиться неудачей в некоторых разновидностях Unix, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если *dst* уже существует, будет возбуждено [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError), даже если это файл.12321233Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [*путей, относительных к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).12341235Если требуется кросс-платформенная перезапись целевого файла, используйте [`replace()`](https://python-all.ru/3.4/library/os.html#os.replace).12361237Доступность: Unix, Windows.12381239Новое в версии 3.3: Аргументы *src\_dir\_fd* и *dst\_dir\_fd*.12401241#### `os.renames(old, new)`12421243Рекурсивная функция переименования каталогов или файлов. Работает как [`rename()`](https://python-all.ru/3.4/library/os.html#os.rename), но сначала пытается создать все промежуточные каталоги, необходимые для правильного нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, удаляются с помощью [`removedirs()`](https://python-all.ru/3.4/library/os.html#os.removedirs).12441245> **Примечание**1246>1247> Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.12481249#### `os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)`12501251Переименовывает файл или каталог *src* в *dst*. Если *dst* является каталогом, возникает исключение [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError). Если *dst* существует и является файлом, он будет бесшумно заменён при наличии соответствующих прав. Операция может завершиться ошибкой, если *src* и *dst* находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).12521253Эта функция может поддерживать указание *src\_dir\_fd* и/или *dst\_dir\_fd* для передачи [*путей, относительных к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).12541255Доступность: Unix, Windows.12561257Новое в версии 3.3.12581259#### `os.rmdir(path, *, dir_fd=None)`12601261Удаляет каталог *path*. Работает только если каталог пуст, иначе возникает исключение [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError). Для удаления целых деревьев каталогов можно использовать [`shutil.rmtree()`](https://python-all.ru/3.4/library/shutil.html#shutil.rmtree).12621263Эта функция может поддерживать [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).12641265Доступность: Unix, Windows.12661267Новое в версии 3.3: Параметр *dir\_fd*.12681269#### `os.stat(path, *, dir_fd=None, follow_symlinks=True)`12701271Возвращает статус файла или файлового дескриптора. Выполняет эквивалент системного вызова `stat()` для заданного пути. *path* может быть задан как строка или как открытый файловый дескриптор. Возвращает объект [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result).12721273Эта функция обычно переходит по символьным ссылкам; чтобы получить статус самой символьной ссылки, добавьте аргумент `follow_symlinks=False` или используйте [`lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat).12741275Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd) и [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).12761277Пример:12781279```python1280>>> import os1281>>> statinfo = os.stat('somefile.txt')1282>>> statinfo1283os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026,1284st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295,1285st_mtime=1297230027, st_ctime=1297230027)1286>>> statinfo.st_size12872641288```12891290Доступность: Unix, Windows.12911292> **См. также**1293>1294> функции [`fstat()`](https://python-all.ru/3.4/library/os.html#os.fstat) и [`lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat)12951296Новое в версии 3.3: Добавлены аргументы *dir\_fd* и *follow\_symlinks*, позволяющие указывать файловый дескриптор вместо пути.12971298#### `class os.stat_result`12991300Объект, атрибуты которого примерно соответствуют членам структуры `stat`. Используется для результата [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat), [`os.fstat()`](https://python-all.ru/3.4/library/os.html#os.fstat) и [`os.lstat()`](https://python-all.ru/3.4/library/os.html#os.lstat).13011302Атрибуты:13031304#### `st_mode`13051306Режим файла: тип файла и биты режима (права доступа).13071308#### `st_ino`13091310Номер inode.13111312#### `st_dev`13131314Идентификатор устройства, на котором находится этот файл.13151316#### `st_nlink`13171318Количество жёстких ссылок.13191320#### `st_uid`13211322Идентификатор пользователя-владельца файла.13231324#### `st_gid`13251326Идентификатор группы владельца файла.13271328#### `st_size`13291330Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.13311332Временные метки:13331334#### `st_atime`13351336Время последнего доступа, выраженное в секундах.13371338#### `st_mtime`13391340Время последнего изменения содержимого, выраженное в секундах.13411342#### `st_ctime`13431344Зависит от платформы:13451346- время последнего изменения метаданных в Unix,1347- время создания в Windows, выраженное в секундах.13481349#### `st_atime_ns`13501351Время последнего доступа, выраженное в наносекундах в виде целого числа.13521353#### `st_mtime_ns`13541355Время последнего изменения содержимого, выраженное в наносекундах в виде целого числа.13561357#### `st_ctime_ns`13581359Зависит от платформы:13601361- время последнего изменения метаданных в Unix,1362- время создания в Windows, выраженное в наносекундах в виде целого числа.13631364См. также функцию [`stat_float_times()`](https://python-all.ru/3.4/library/os.html#os.stat_float_times).13651366> **Примечание**1367>1368> Точное значение и разрешение атрибутов [`st_atime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime) и [`st_ctime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime) зависят от операционной системы и файловой системы. Например, в системах Windows с файловыми системами FAT или FAT32 [`st_mtime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime) имеет разрешение 2 секунды, а [`st_atime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime) – только 1 день. Подробнее см. документацию вашей операционной системы.1369>1370> Аналогично, хотя [`st_atime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime_ns) и [`st_ctime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime_ns) всегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, которые обеспечивают наносекундную точность, объект с плавающей точкой, используемый для хранения [`st_atime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime) и [`st_ctime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime), не может сохранить её полностью и поэтому будет слегка неточным. Если нужны точные временные метки, следует всегда использовать [`st_atime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime_ns) и [`st_ctime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime_ns).13711372В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:13731374#### `st_blocks`13751376Количество 512-байтовых блоков, выделенных для файла. Может быть меньше, чем [`st_size`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_size)/512, если файл содержит дыры.13771378#### `st_blksize`13791380«Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).13811382#### `st_rdev`13831384Тип устройства, если inode является устройством.13851386#### `st_flags`13871388Определённые пользователем флаги для файла.13891390В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):13911392#### `st_gen`13931394Номер поколения файла.13951396#### `st_birthtime`13971398Время создания файла.13991400В системах Mac OS также могут быть доступны следующие атрибуты:14011402#### `st_rsize`14031404Реальный размер файла.14051406#### `st_creator`14071408Создатель файла.14091410#### `st_type`14111412Тип файла.14131414Стандартный модуль [`stat`](https://python-all.ru/3.4/library/stat.html#module-stat) определяет функции и константы, полезные для извлечения информации из структуры `stat`. (В Windows некоторые поля заполняются фиктивными значениями.)14151416Для обратной совместимости экземпляр [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result) также доступен в виде кортежа как минимум из 10 целых чисел, представляющих наиболее важные (и переносимые) члены структуры `stat`, в порядке: [`st_mode`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mode), [`st_ino`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ino), [`st_dev`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_dev), [`st_nlink`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_nlink), [`st_uid`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_uid), [`st_gid`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_gid), [`st_size`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_size), [`st_atime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime), [`st_mtime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime), [`st_ctime`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime). Некоторые реализации могут добавлять дополнительные элементы в конец. Для совместимости со старыми версиями Python обращение к [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result) как к кортежу всегда возвращает целые числа.14171418Новое в версии 3.3: Добавлены члены [`st_atime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_atime_ns), [`st_mtime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_mtime_ns) и [`st_ctime_ns`](https://python-all.ru/3.4/library/os.html#os.stat_result.st_ctime_ns).14191420#### `os.stat_float_times([newvalue])`14211422Определяет, представляет ли [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result) временные метки в виде чисел с плавающей запятой. Если *newvalue* равен `True`, последующие вызовы [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat) будут возвращать числа с плавающей запятой, если `False` – целые числа. Если *newvalue* опущен, возвращается текущая настройка.14231424Для совместимости со старыми версиями Python обращение к [`stat_result`](https://python-all.ru/3.4/library/os.html#os.stat_result) как к кортежу всегда возвращает целые числа.14251426Python теперь по умолчанию возвращает значения float. Приложения, которые некорректно работают с вещественными временными метками, могут использовать эту функцию для восстановления старого поведения.14271428Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только секундное разрешение; на таких системах дробная часть всегда будет равна нулю.14291430Рекомендуется изменять этот параметр только во время запуска программы в модуле *\_\_main\_\_*; библиотеки никогда не должны изменять этот параметр. Если приложение использует библиотеку, которая некорректно работает при обработке вещественных временных меток, этому приложению следует отключить эту возможность до тех пор, пока библиотека не будет исправлена.14311432Устарело с версии 3.3.14331434#### `os.statvfs(path)`14351436Выполняет системный вызов `statvfs()` для заданного пути. Возвращаемое значение – объект, атрибуты которого описывают файловую систему по указанному пути и соответствуют членам структуры `statvfs`, а именно: `f_bsize`, `f_frsize`, `f_blocks`, `f_bfree`, `f_bavail`, `f_files`, `f_ffree`, `f_favail`, `f_flag`, `f_namemax`.14371438Для битовых флагов атрибута `f_flag` определены две константы уровня модуля: если установлен флаг `ST_RDONLY`, файловая система смонтирована только для чтения, а если установлен `ST_NOSUID`, семантика битов setuid/setgid отключена или не поддерживается.14391440Дополнительные константы уровня модуля определены для систем на базе GNU/glibc: `ST_NODEV` (запрет доступа к специальным файлам устройств), `ST_NOEXEC` (запрет выполнения программ), `ST_SYNCHRONOUS` (запись синхронизируется немедленно), `ST_MANDLOCK` (разрешение обязательных блокировок в ФС), `ST_WRITE` (запись в файл/каталог/символическую ссылку), `ST_APPEND` (файл только для добавления), `ST_IMMUTABLE` (неизменяемый файл), `ST_NOATIME` (не обновлять время доступа), `ST_NODIRATIME` (не обновлять время доступа каталогов), `ST_RELATIME` (обновлять atime относительно mtime/ctime).14411442Эта функция может поддерживать [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd).14431444Изменено в версии 3.2: Добавлены константы `ST_RDONLY` и `ST_NOSUID`.14451446Изменено в версии 3.4: Добавлены константы `ST_NODEV`, `ST_NOEXEC`, `ST_SYNCHRONOUS`, `ST_MANDLOCK`, `ST_WRITE`, `ST_APPEND`, `ST_IMMUTABLE`, `ST_NOATIME`, `ST_NODIRATIME` и `ST_RELATIME`.14471448Доступность: Unix.14491450Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для *path*.14511452#### `os.supports_dir_fd`14531454Объект [`Set`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Set), указывающий, какие функции модуля [`os`](https://python-all.ru/3.4/library/os.html#module-os) допускают использование параметра *dir\_fd*. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие *dir\_fd*, всегда позволяют указывать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.14551456Чтобы проверить, допускает ли конкретная функция использование параметра *dir\_fd*, используйте оператор `in` для `supports_dir_fd`. Например, следующее выражение определяет, доступен ли локально параметр *dir\_fd* функции [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat):14571458```python1459os.stat in os.supports_dir_fd1460```14611462В настоящее время параметры *dir\_fd* работают только на Unix-платформах; ни один из них не работает в Windows.14631464Новое в версии 3.3.14651466#### `os.supports_effective_ids`14671468Объект [`Set`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Set), указывающий, какие функции модуля [`os`](https://python-all.ru/3.4/library/os.html#module-os) допускают использование параметра *effective\_ids* для [`os.access()`](https://python-all.ru/3.4/library/os.html#os.access). Если локальная платформа это поддерживает, в коллекции будет [`os.access()`](https://python-all.ru/3.4/library/os.html#os.access), иначе она будет пуста.14691470Чтобы проверить, можно ли использовать параметр *effective\_ids* для [`os.access()`](https://python-all.ru/3.4/library/os.html#os.access), используйте оператор `in` для `supports_effective_ids`, например так:14711472```python1473os.access in os.supports_effective_ids1474```14751476В настоящее время *effective\_ids* работает только на Unix-платформах; он не работает в Windows.14771478Новое в версии 3.3.14791480#### `os.supports_fd`14811482Объект [`Set`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Set), указывающий, какие функции модуля [`os`](https://python-all.ru/3.4/library/os.html#module-os) позволяют указывать параметр *path* в виде открытого файлового дескриптора. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие *fd*, всегда позволяют указать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.14831484Чтобы проверить, допускает ли конкретная функция указание открытого файлового дескриптора для своего параметра *path*, используйте оператор `in` для `supports_fd`. Например, следующее выражение определяет, принимает ли [`os.chdir()`](https://python-all.ru/3.4/library/os.html#os.chdir) открытые файловые дескрипторы при вызове на вашей локальной платформе:14851486```python1487os.chdir in os.supports_fd1488```14891490Новое в версии 3.3.14911492#### `os.supports_follow_symlinks`14931494Объект [`Set`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Set), указывающий, какие функции модуля [`os`](https://python-all.ru/3.4/library/os.html#module-os) допускают использование параметра *follow\_symlinks*. Разные платформы предоставляют разные возможности, и то, что работает на одной, может не поддерживаться на другой. Для единообразия функции, поддерживающие *follow\_symlinks*, всегда позволяют указывать этот параметр, но возбуждают исключение, если функциональность на самом деле недоступна.14951496Чтобы проверить, допускает ли конкретная функция использование параметра *follow\_symlinks*, используйте оператор `in` для `supports_follow_symlinks`. Например, следующее выражение определяет, доступен ли локально параметр *follow\_symlinks* функции [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat):14971498```python1499os.stat in os.supports_follow_symlinks1500```15011502Новое в версии 3.3.15031504#### `os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)`15051506Создает символическую ссылку, указывающую на *src* с именем *dst*.15071508В Windows символическая ссылка представляет либо файл, либо каталог и не меняет свой тип динамически в зависимости от цели. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если *target\_is\_directory* равно `True`, или как файловая ссылка (по умолчанию). На платформах, отличных от Windows, *target\_is\_directory* игнорируется.15091510Поддержка символических ссылок была введена в Windows 6.0 (Vista). [`symlink()`](https://python-all.ru/3.4/library/os.html#os.symlink) вызовет [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError) в версиях Windows старше 6.0.15111512Эта функция может поддерживать [*пути, относительные к дескрипторам каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd).15131514> **Примечание**1515>1516> В Windows для успешного создания символических ссылок требуется привилегия *SeCreateSymbolicLinkPrivilege*. Эта привилегия обычно не предоставляется обычным пользователям, но доступна учетным записям, которые могут повысить привилегии до уровня администратора. Либо получение этой привилегии, либо запуск приложения от имени администратора – способы успешно создавать символические ссылки.1517>1518> [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) возникает, когда функция вызывается непривилегированным пользователем.15191520Доступность: Unix, Windows.15211522Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).15231524Новое в версии 3.3: Добавлен аргумент *dir\_fd*, и теперь *target\_is\_directory* доступен на платформах, отличных от Windows.15251526#### `os.sync()`15271528Принудительная запись всех данных на диск.15291530Доступность: Unix.15311532Новое в версии 3.3.15331534#### `os.truncate(path, length)`15351536Усекает файл, соответствующий *path*, так, чтобы его размер не превышал *length* байт.15371538Эта функция может поддерживать [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd).15391540Доступность: Unix.15411542Новое в версии 3.3.15431544#### `os.unlink(path, *, dir_fd=None)`15451546Удаляет файл *path*. Эта функция идентична [`remove()`](https://python-all.ru/3.4/library/os.html#os.remove); название `unlink` является её традиционным именем в Unix. Дополнительную информацию см. в документации к [`remove()`](https://python-all.ru/3.4/library/os.html#os.remove).15471548Доступность: Unix, Windows.15491550Новое в версии 3.3: Параметр *dir\_fd*.15511552#### `os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)`15531554Устанавливает время доступа и изменения файла, указанного в *path*.15551556[`utime()`](https://python-all.ru/3.4/library/os.html#os.utime) принимает два необязательных параметра: *times* и *ns*. Они задают время, устанавливаемое для *path*, и используются следующим образом:15571558- Если указан *ns*, он должен быть кортежем из двух элементов вида `(atime_ns, mtime_ns)`, где каждый элемент – это int, выражающий наносекунды.1559- Если *times* не равен `None`, он должен быть кортежем из двух элементов вида `(atime, mtime)`, где каждый элемент – это int или float, выражающий секунды.1560- Если *times* равен `None`, а *ns* не указан, это эквивалентно указанию `ns=(atime_ns, mtime_ns)`, где оба времени равны текущему.15611562Указывать кортежи одновременно для *times* и *ns* – ошибка.15631564Возможность указать каталог для *path* зависит от того, реализует ли операционная система каталоги как файлы (например, Windows не реализует). Обратите внимание, что точное время, установленное здесь, может не вернуться при последующем вызове [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat) в зависимости от разрешения, с которым ваша операционная система записывает время доступа и модификации; см. [`stat()`](https://python-all.ru/3.4/library/os.html#os.stat). Лучший способ сохранить точное время – использовать поля *st\_atime\_ns* и *st\_mtime\_ns* из объекта результата [`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat) с параметром *ns* функции *utime*.15651566Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd), [*пути относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) и [*не следование по символьным ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).15671568Доступность: Unix, Windows.15691570Новое в версии 3.3: добавлена поддержка указания открытого файлового дескриптора для *path*, а также параметров *dir\_fd*, *follow\_symlinks* и *ns*.15711572#### `os.walk(top, topdown=True, onerror=None, followlinks=False)`15731574Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге *top* (включая сам *top*) он возвращает кортеж из трёх элементов `(dirpath, dirnames, filenames)`.15751576*dirpath* – строка, путь к каталогу. *dirnames* – список имён подкаталогов в *dirpath* (за исключением `'.'` и `'..'`). *filenames* – список имён файлов, не являющихся каталогами, в *dirpath*. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с *top*) к файлу или каталогу в *dirpath*, выполните `os.path.join(dirpath, name)`.15771578Если необязательный аргумент *topdown* равен `True` или не указан, тройка для каталога генерируется до троек для любых его подкаталогов (каталоги генерируются сверху вниз). Если *topdown* равен `False`, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги генерируются снизу вверх). Независимо от значения *topdown*, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.15791580Когда *topdown* равен `True`, вызывающий код может изменить список *dirnames* на месте (возможно, используя [`del`](https://python-all.ru/3.4/reference/simple_stmts.html#del) или присваивание срезу), и [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) будет рекурсивно обходить только те подкаталоги, чьи имена остались в *dirnames*; это можно использовать для усечения поиска, наложения определённого порядка обхода или даже для информирования [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) о каталогах, которые вызывающий код создаёт или переименовывает перед тем, как [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) будет возобновлён. Изменение *dirnames*, когда *topdown* равен `False`, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в *dirnames* генерируются до того, как генерируется сам *dirpath*.15811582По умолчанию ошибки от вызова [`listdir()`](https://python-all.ru/3.4/library/os.html#os.listdir) игнорируются. Если указан необязательный аргумент *onerror*, он должен быть функцией; она будет вызвана с одним аргументом, экземпляром [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError). Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибут `filename` объекта исключения.15831584По умолчанию [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) не будет спускаться по символическим ссылкам, ведущим к каталогам. Установите *followlinks* в `True`, чтобы посещать каталоги, на которые указывают символические ссылки, в системах, поддерживающих их.15851586> **Примечание**1587>1588> Имейте в виду, что установка *followlinks* в `True` может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя. [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) не отслеживает уже посещённые каталоги.15891590> **Примечание**1591>1592> Если вы передаёте относительное имя пути, не меняйте текущий рабочий каталог между возобновлениями [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk). [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk) никогда не меняет текущий каталог и предполагает, что вызывающий код тоже его не меняет.15931594В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:15951596```python1597import os1598from os.path import join, getsize1599for root, dirs, files in os.walk('python/Lib/email'):1600    print(root, "consumes", end=" ")1601    print(sum(getsize(join(root, name)) for name in files), end=" ")1602    print("bytes in", len(files), "non-directory files")1603    if 'CVS' in dirs:1604        dirs.remove('CVS')  # не заходить в CVS-каталоги1605```16061607В следующем примере (простая реализация [`shutil.rmtree()`](https://python-all.ru/3.4/library/shutil.html#shutil.rmtree)) важно обходить дерево снизу вверх, так как [`rmdir()`](https://python-all.ru/3.4/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:16081609```python1610# Удалить всё, доступное из каталога с именем "top",1611# при условии отсутствия символических ссылок.1612# ВНИМАНИЕ: это опасно! Например, если top == '/', это1613# может удалить все ваши файлы на диске.1614import os1615for root, dirs, files in os.walk(top, topdown=False):1616    for name in files:1617        os.remove(os.path.join(root, name))1618    for name in dirs:1619        os.rmdir(os.path.join(root, name))1620```16211622#### `os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)`16231624Эта функция ведёт себя точно так же, как [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk), за исключением того, что возвращает кортеж из четырёх элементов `(dirpath, dirnames, filenames, dirfd)` и поддерживает `dir_fd`.16251626*dirpath*, *dirnames* и *filenames* идентичны выходным данным [`walk()`](https://python-all.ru/3.4/library/os.html#os.walk), а *dirfd* – это файловый дескриптор, ссылающийся на каталог *dirpath*.16271628Эта функция всегда поддерживает [*пути относительно дескрипторов каталогов*](https://python-all.ru/3.4/library/os.html#dir-fd) и [*непереход по символическим ссылкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks). Однако обратите внимание, что, в отличие от других функций, значение по умолчанию для *follow\_symlinks* в [`fwalk()`](https://python-all.ru/3.4/library/os.html#os.fwalk) равно `False`.16291630> **Примечание**1631>1632> Поскольку [`fwalk()`](https://python-all.ru/3.4/library/os.html#os.fwalk) возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощью [`dup()`](https://python-all.ru/3.4/library/os.html#os.dup)), если требуется сохранить их дольше.16331634В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:16351636```python1637import os1638for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):1639    print(root, "consumes", end="")1640    print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),1641          end="")1642    print("bytes in", len(files), "non-directory files")1643    if 'CVS' in dirs:1644        dirs.remove('CVS')  # не заходить в CVS-каталоги1645```16461647В следующем примере важно обходить дерево снизу вверх: [`rmdir()`](https://python-all.ru/3.4/library/os.html#os.rmdir) не позволяет удалить каталог, пока он не пуст:16481649```python1650# Удалить всё, доступное из каталога с именем "top",1651# при условии отсутствия символических ссылок.1652# ВНИМАНИЕ: это опасно! Например, если top == '/', это1653# может удалить все ваши файлы на диске.1654import os1655for root, dirs, files, rootfd in os.fwalk(top, topdown=False):1656    for name in files:1657        os.unlink(name, dir_fd=rootfd)1658    for name in dirs:1659        os.rmdir(name, dir_fd=rootfd)1660```16611662Доступность: Unix.16631664Новое в версии 3.3.16651666### 16.1.5.1. Расширенные атрибуты Linux16671668Новое в версии 3.3.16691670Все эти функции доступны только в Linux.16711672#### `os.getxattr(path, attribute, *, follow_symlinks=True)`16731674Возвращает значение расширенного атрибута файловой системы *attribute* для *path*. *attribute* может быть байтовой строкой или строкой. Если это строка, она кодируется с помощью кодировки файловой системы.16751676Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd) и [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).16771678#### `os.listxattr(path=None, *, follow_symlinks=True)`16791680Возвращает список расширенных атрибутов файловой системы для *path*. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если *path* равен `None`, [`listxattr()`](https://python-all.ru/3.4/library/os.html#os.listxattr) будет исследовать текущий каталог.16811682Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd) и [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).16831684#### `os.removexattr(path, attribute, *, follow_symlinks=True)`16851686Удаляет расширенный атрибут файловой системы *attribute* из *path*. *attribute* должен быть байтовой строкой или строкой. Если это строка, она кодируется с помощью кодировки файловой системы.16871688Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd) и [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).16891690#### `os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)`16911692Устанавливает расширенный атрибут файловой системы *attribute* для *path* в значение *value*. *attribute* должен быть типа bytes или str без встроенных NUL. Если это str, он кодируется с использованием кодировки файловой системы. *flags* может быть [`XATTR_REPLACE`](https://python-all.ru/3.4/library/os.html#os.XATTR_REPLACE) или [`XATTR_CREATE`](https://python-all.ru/3.4/library/os.html#os.XATTR_CREATE). Если [`XATTR_REPLACE`](https://python-all.ru/3.4/library/os.html#os.XATTR_REPLACE) указан, а атрибут не существует, будет вызвано `EEXISTS`. Если [`XATTR_CREATE`](https://python-all.ru/3.4/library/os.html#os.XATTR_CREATE) указан, а атрибут уже существует, атрибут не будет создан и будет вызвано `ENODATA`.16931694Эта функция поддерживает [*указание файлового дескриптора*](https://python-all.ru/3.4/library/os.html#path-fd) и [*отказ от следования симлинкам*](https://python-all.ru/3.4/library/os.html#follow-symlinks).16951696> **Примечание**1697>1698> В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.16991700#### `os.XATTR_SIZE_MAX`17011702Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.17031704#### `os.XATTR_CREATE`17051706Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.4/library/os.html#os.setxattr). Оно указывает, что операция должна создать атрибут.17071708#### `os.XATTR_REPLACE`17091710Это возможное значение для аргумента flags в [`setxattr()`](https://python-all.ru/3.4/library/os.html#os.setxattr). Оно указывает, что операция должна заменить существующий атрибут.17111712## 16.1.6. Управление процессами17131714Эти функции можно использовать для создания процессов и управления ими.17151716Различные функции [`exec*`](https://python-all.ru/3.4/library/os.html#os.execl) принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый из этих аргументов передается новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это `argv[0]`, передаваемый в `main()` программы. Например, `os.execv('/bin/echo', ['foo', 'bar'])` выведет на стандартный вывод только `bar`; `foo` будет проигнорирован.17171718#### `os.abort()`17191720Генерирует сигнал `SIGABRT` для текущего процесса. В Unix поведение по умолчанию – создание дампа памяти; в Windows процесс немедленно возвращает код возврата `3`. Вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный для `SIGABRT` с помощью [`signal.signal()`](https://python-all.ru/3.4/library/signal.html#signal.signal).17211722Доступность: Unix, Windows.17231724#### `os.execl(path, arg0, arg1, ...)`17251726#### `os.execle(path, arg0, arg1, ..., env)`17271728#### `os.execlp(file, arg0, arg1, ...)`17291730#### `os.execlpe(file, arg0, arg1, ..., env)`17311732#### `os.execv(path, args)`17331734#### `os.execve(path, args, env)`17351736#### `os.execvp(file, args)`17371738#### `os.execvpe(file, args, env)`17391740Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут возбуждаться как исключения [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).17411742Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому, если в этих открытых файлах могут быть буферизированные данные, их следует сбросить с помощью `sys.stdout.flush()` или [`os.fsync()`](https://python-all.ru/3.4/library/os.html#os.fsync) перед вызовом функции [`exec*`](https://python-all.ru/3.4/library/os.html#os.execl).17431744Варианты «l» и «v» функций [`exec*`](https://python-all.ru/3.4/library/os.html#os.execl) различаются способом передачи аргументов командной строки. Варианты «l», вероятно, проще всего использовать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `execl*()`. Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр *args*. В любом случае аргументы дочернего процесса должны начинаться с имени запускаемой команды, но это не является строгим требованием.17451746Варианты, содержащие букву «p» в конце ([`execlp()`](https://python-all.ru/3.4/library/os.html#os.execlp), [`execlpe()`](https://python-all.ru/3.4/library/os.html#os.execlpe), [`execvp()`](https://python-all.ru/3.4/library/os.html#os.execvp) и [`execvpe()`](https://python-all.ru/3.4/library/os.html#os.execvpe)), будут использовать переменную окружения `PATH` для поиска программы *file*. Когда окружение заменяется (с помощью одного из вариантов [`exec*e`](https://python-all.ru/3.4/library/os.html#os.execl), обсуждаемых в следующем абзаце), новое окружение используется как источник переменной `PATH`. Другие варианты – [`execl()`](https://python-all.ru/3.4/library/os.html#os.execl), [`execle()`](https://python-all.ru/3.4/library/os.html#os.execle), [`execv()`](https://python-all.ru/3.4/library/os.html#os.execv) и [`execve()`](https://python-all.ru/3.4/library/os.html#os.execve) – не будут использовать переменную `PATH` для поиска исполняемого файла; *path* должен содержать подходящий абсолютный или относительный путь.17471748Для [`execle()`](https://python-all.ru/3.4/library/os.html#os.execle), [`execlpe()`](https://python-all.ru/3.4/library/os.html#os.execlpe), [`execve()`](https://python-all.ru/3.4/library/os.html#os.execve) и [`execvpe()`](https://python-all.ru/3.4/library/os.html#os.execvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`execl()`](https://python-all.ru/3.4/library/os.html#os.execl), [`execlp()`](https://python-all.ru/3.4/library/os.html#os.execlp), [`execv()`](https://python-all.ru/3.4/library/os.html#os.execv) и [`execvp()`](https://python-all.ru/3.4/library/os.html#os.execvp) заставляют новый процесс наследовать окружение текущего процесса.17491750Для [`execve()`](https://python-all.ru/3.4/library/os.html#os.execve) на некоторых платформах *path* может быть также задан как открытый файловый дескриптор. Эта функциональность может не поддерживаться на вашей платформе; проверить её доступность можно с помощью [`os.supports_fd`](https://python-all.ru/3.4/library/os.html#os.supports_fd). Если она недоступна, её использование вызовет исключение [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).17511752Доступность: Unix, Windows.17531754Новое в версии 3.3: Добавлена поддержка указания открытого файлового дескриптора для *path* для [`execve()`](https://python-all.ru/3.4/library/os.html#os.execve).17551756#### `os._exit(n)`17571758Завершает процесс с кодом *n*, без вызова обработчиков очистки, сброса буферов stdio и т.д.17591760Доступность: Unix, Windows.17611762> **Примечание**1763>1764> Стандартный способ завершения – `sys.exit(n)`. [`_exit()`](https://python-all.ru/3.4/library/os.html#os._exit) обычно следует использовать только в дочернем процессе после [`fork()`](https://python-all.ru/3.4/library/os.html#os.fork).17651766Следующие коды возврата определены и могут использоваться с [`_exit()`](https://python-all.ru/3.4/library/os.html#os._exit), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.17671768> **Примечание**1769>1770> Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.17711772#### `os.EX_OK`17731774Код завершения, означающий, что ошибок не возникло.17751776Доступность: Unix.17771778#### `os.EX_USAGE`17791780Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.17811782Доступность: Unix.17831784#### `os.EX_DATAERR`17851786Код завершения, означающий, что входные данные были некорректны.17871788Доступность: Unix.17891790#### `os.EX_NOINPUT`17911792Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.17931794Доступность: Unix.17951796#### `os.EX_NOUSER`17971798Код завершения, означающий, что указанный пользователь не существовал.17991800Доступность: Unix.18011802#### `os.EX_NOHOST`18031804Код завершения, означающий, что указанный хост не существовал.18051806Доступность: Unix.18071808#### `os.EX_UNAVAILABLE`18091810Код завершения, означающий, что требуемая служба недоступна.18111812Доступность: Unix.18131814#### `os.EX_SOFTWARE`18151816Код завершения, означающий, что обнаружена внутренняя программная ошибка.18171818Доступность: Unix.18191820#### `os.EX_OSERR`18211822Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.18231824Доступность: Unix.18251826#### `os.EX_OSFILE`18271828Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.18291830Доступность: Unix.18311832#### `os.EX_CANTCREAT`18331834Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.18351836Доступность: Unix.18371838#### `os.EX_IOERR`18391840Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.18411842Доступность: Unix.18431844#### `os.EX_TEMPFAIL`18451846Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.18471848Доступность: Unix.18491850#### `os.EX_PROTOCOL`18511852Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.18531854Доступность: Unix.18551856#### `os.EX_NOPERM`18571858Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).18591860Доступность: Unix.18611862#### `os.EX_CONFIG`18631864Код выхода, указывающий на ошибку конфигурации.18651866Доступность: Unix.18671868#### `os.EX_NOTFOUND`18691870Код выхода, означающий нечто вроде «запись не найдена».18711872Доступность: Unix.18731874#### `os.fork()`18751876Создаёт дочерний процесс. Возвращает `0` в дочернем процессе и идентификатор дочернего процесса в родительском. Если происходит ошибка, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).18771878Обратите внимание, что на некоторых платформах, включая FreeBSD \<= 6.3 и Cygwin, есть известные проблемы при использовании fork() из потока.18791880> **Предупреждение**1881>1882> О приложениях, использующих модуль SSL с fork(), см. [`ssl`](https://python-all.ru/3.4/library/ssl.html#module-ssl).18831884Доступность: Unix.18851886#### `os.forkpty()`18871888Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару `(pid, fd)`, где *pid* равен `0` в дочернем процессе, идентификатору нового дочернего процесса в родительском, а *fd* – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модуль [`pty`](https://python-all.ru/3.4/library/pty.html#module-pty). Если происходит ошибка, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError).18891890Доступность: некоторые разновидности Unix.18911892#### `os.kill(pid, sig)`18931894Отправляет сигнал *sig* процессу *pid*. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле [`signal`](https://python-all.ru/3.4/library/signal.html#module-signal).18951896Windows: сигналы [`signal.CTRL_C_EVENT`](https://python-all.ru/3.4/library/signal.html#signal.CTRL_C_EVENT) и [`signal.CTRL_BREAK_EVENT`](https://python-all.ru/3.4/library/signal.html#signal.CTRL_BREAK_EVENT) являются особыми – их можно отправлять только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение *sig* приведет к безусловному завершению процесса через API TerminateProcess, а код возврата будет установлен в *sig*. Версия [`kill()`](https://python-all.ru/3.4/library/os.html#os.kill) для Windows дополнительно принимает дескрипторы процессов, которые нужно завершить.18971898Смотрите также [`signal.pthread_kill()`](https://python-all.ru/3.4/library/signal.html#signal.pthread_kill).18991900Новое в версии 3.2: Поддержка Windows.19011902#### `os.killpg(pgid, sig)`19031904Отправить сигнал *sig* группе процессов *pgid*.19051906Доступность: Unix.19071908#### `os.nice(increment)`19091910Добавить *increment* к «приоритету» процесса. Возвращает новый приоритет.19111912Доступность: Unix.19131914#### `os.plock(op)`19151916Блокирует сегменты программы в памяти. Значение *op* (определено в `<sys/lock.h>`) определяет, какие сегменты будут заблокированы.19171918Доступность: Unix.19191920#### `os.popen(cmd, mode='r', buffering=-1)`19211922Открывает канал для связи с командой *cmd*. Возвращаемое значение – открытый файловый объект, подключенный к каналу, который можно читать или записывать в зависимости от того, является ли *mode* равным `'r'` (по умолчанию) или `'w'`. Аргумент *buffering* имеет тот же смысл, что и соответствующий аргумент встроенной функции [`open()`](https://python-all.ru/3.4/library/functions.html#open). Возвращаемый файловый объект читает или записывает текстовые строки, а не байты.19231924Метод `close` возвращает [`None`](https://python-all.ru/3.4/library/constants.html#None), если подпроцесс завершился успешно, или код возврата подпроцесса в случае ошибки. В системах POSIX, если код возврата положителен, он представляет собой возвращаемое значение процесса, сдвинутое влево на один байт. Если код возврата отрицателен, процесс был завершён сигналом, соответствующим инвертированному значению кода возврата. (Например, возвращаемое значение может быть `- signal.SIGKILL`, если подпроцесс был убит.) В системах Windows возвращаемое значение содержит знаковый целочисленный код возврата дочернего процесса.19251926Реализовано с помощью [`subprocess.Popen`](https://python-all.ru/3.4/library/subprocess.html#subprocess.Popen); обратитесь к документации этого класса для получения более мощных способов управления подпроцессами и взаимодействия с ними.19271928#### `os.spawnl(mode, path, ...)`19291930#### `os.spawnle(mode, path, ..., env)`19311932#### `os.spawnlp(mode, file, ...)`19331934#### `os.spawnlpe(mode, file, ..., env)`19351936#### `os.spawnv(mode, path, args)`19371938#### `os.spawnve(mode, path, args, env)`19391940#### `os.spawnvp(mode, file, args)`19411942#### `os.spawnvpe(mode, file, args, env)`19431944Выполняет программу *path* в новом процессе.19451946(Обратите внимание, что модуль [`subprocess`](https://python-all.ru/3.4/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем этих функций. Особенно обратитесь к разделу [*Замена старых функций модулем subprocess*](https://python-all.ru/3.4/library/subprocess.html#subprocess-replacements).)19471948Если *mode* равен [`P_NOWAIT`](https://python-all.ru/3.4/library/os.html#os.P_NOWAIT), эта функция возвращает идентификатор нового процесса; если *mode* равен [`P_WAIT`](https://python-all.ru/3.4/library/os.html#os.P_WAIT), возвращает код завершения процесса, если он завершился нормально, или `-signal`, где *signal* – это сигнал, который убил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функцией [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid).19491950Варианты с буквами «l» и «v» функций семейства [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl) отличаются способом передачи аргументов командной строки. Варианты с «l», пожалуй, самые простые в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функций `spawnl*()`. Варианты с «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр *args*. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.19511952Варианты, содержащие вторую букву «p» ближе к концу ([`spawnlp()`](https://python-all.ru/3.4/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.4/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.4/library/os.html#os.spawnvp), [`spawnvpe()`](https://python-all.ru/3.4/library/os.html#os.spawnvpe)) используют переменную окружения `PATH` для поиска программы *file*. Когда окружение заменяется (с использованием одного из вариантов [`spawn*e`](https://python-all.ru/3.4/library/os.html#os.spawnl), рассмотренных в следующем абзаце), новое окружение используется в качестве источника переменной `PATH`. Другие варианты: [`spawnl()`](https://python-all.ru/3.4/library/os.html#os.spawnl), [`spawnle()`](https://python-all.ru/3.4/library/os.html#os.spawnle), [`spawnv()`](https://python-all.ru/3.4/library/os.html#os.spawnv), [`spawnve()`](https://python-all.ru/3.4/library/os.html#os.spawnve) – не используют переменную `PATH` для поиска исполняемого файла; *path* должен содержать соответствующий абсолютный или относительный путь.19531954Для [`spawnle()`](https://python-all.ru/3.4/library/os.html#os.spawnle), [`spawnlpe()`](https://python-all.ru/3.4/library/os.html#os.spawnlpe), [`spawnve()`](https://python-all.ru/3.4/library/os.html#os.spawnve), [`spawnvpe()`](https://python-all.ru/3.4/library/os.html#os.spawnvpe) (обратите внимание, что все они заканчиваются на «e») параметр *env* должен быть отображением (mapping), которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функции [`spawnl()`](https://python-all.ru/3.4/library/os.html#os.spawnl), [`spawnlp()`](https://python-all.ru/3.4/library/os.html#os.spawnlp), [`spawnv()`](https://python-all.ru/3.4/library/os.html#os.spawnv), [`spawnvp()`](https://python-all.ru/3.4/library/os.html#os.spawnvp) заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре *env* должны быть строками; недопустимые ключи или значения приведут к ошибке функции, с возвращаемым значением `127`.19551956В качестве примера следующие вызовы [`spawnlp()`](https://python-all.ru/3.4/library/os.html#os.spawnlp) и [`spawnvpe()`](https://python-all.ru/3.4/library/os.html#os.spawnvpe) эквивалентны:19571958```python1959import os1960os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null')19611962L = ['cp', 'index.html', '/dev/null']1963os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)1964```19651966Доступность: Unix, Windows. [`spawnlp()`](https://python-all.ru/3.4/library/os.html#os.spawnlp), [`spawnlpe()`](https://python-all.ru/3.4/library/os.html#os.spawnlpe), [`spawnvp()`](https://python-all.ru/3.4/library/os.html#os.spawnvp) и [`spawnvpe()`](https://python-all.ru/3.4/library/os.html#os.spawnvpe) недоступны в Windows. [`spawnle()`](https://python-all.ru/3.4/library/os.html#os.spawnle) и [`spawnve()`](https://python-all.ru/3.4/library/os.html#os.spawnve) не являются потокобезопасными в Windows; рекомендуется использовать модуль [`subprocess`](https://python-all.ru/3.4/library/subprocess.html#module-subprocess).19671968#### `os.P_NOWAIT`19691970#### `os.P_NOWAITO`19711972Возможные значения для параметра *mode* функций семейства [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl). Если указано любое из этих значений, функции `spawn*()` возвращаются сразу после создания нового процесса, возвращая идентификатор нового процесса в качестве значения.19731974Доступность: Unix, Windows.19751976#### `os.P_WAIT`19771978Возможное значение для параметра *mode* функций семейства [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl). Если указано *mode*, функции `spawn*()` не возвращаются до завершения выполнения нового процесса и возвращают код завершения процесса, если выполнение успешно, или `-signal`, если сигнал убивает процесс.19791980Доступность: Unix, Windows.19811982#### `os.P_DETACH`19831984#### `os.P_OVERLAY`19851986Возможные значения для параметра *mode* функций семейства [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl). Они менее переносимы, чем перечисленные выше. [`P_DETACH`](https://python-all.ru/3.4/library/os.html#os.P_DETACH) аналогичен [`P_NOWAIT`](https://python-all.ru/3.4/library/os.html#os.P_NOWAIT), но новый процесс отсоединяется от консоли вызывающего процесса. Если используется [`P_OVERLAY`](https://python-all.ru/3.4/library/os.html#os.P_OVERLAY), текущий процесс будет заменен; функция [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl) не вернет управление.19871988Доступность: Windows.19891990#### `os.startfile(path[, operation])`19911992Запускает файл в связанном с ним приложении.19931994Если *operation* не указан или равен `'open'`, это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде **start** из интерактивной командной оболочки: файл открывается приложением (если оно есть), связанным с его расширением.19951996Если указано другое значение *operation*, оно должно быть «командным глаголом» (command verb), определяющим, что следует сделать с файлом. Распространённые глаголы, документированные Microsoft: `'print'` и `'edit'` (используются для файлов), а также `'explore'` и `'find'` (используются для каталогов).19971998[`startfile()`](https://python-all.ru/3.4/library/os.html#os.startfile) возвращает управление сразу после запуска связанного приложения. Нет возможности дождаться закрытия приложения или получить его код завершения. Параметр *path* задаётся относительно текущего каталога. Если требуется использовать абсолютный путь, убедитесь, что первый символ не является косой чертой (`'/'`); в этом случае базовая функция Win32 `ShellExecute()` не работает. Используйте функцию [`os.path.normpath()`](https://python-all.ru/3.4/library/os.path.html#os.path.normpath), чтобы гарантировать правильную кодировку пути для Win32.19992000Доступность: Windows.20012002#### `os.system(command)`20032004Выполняет команду (строку) в подчиненной оболочке (subshell). Реализовано вызовом стандартной функции C `system()` и имеет те же ограничения. Изменения [`sys.stdin`](https://python-all.ru/3.4/library/sys.html#sys.stdin) и т.п. не отражаются в окружении выполняемой команды. Если *command* генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора.20052006В Unix возвращаемое значение – это код завершения процесса, закодированный в формате, указанном для [`wait()`](https://python-all.ru/3.4/library/os.html#os.wait). Обратите внимание, что POSIX не определяет значение возвращаемого значения функции C `system()`, поэтому возвращаемое значение функции Python зависит от системы.20072008В Windows возвращаемое значение – это то, что возвращает системная оболочка после выполнения *command*. Оболочка задается переменной окружения Windows `COMSPEC`; обычно это **cmd.exe**, которая возвращает код завершения выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.20092010Модуль [`subprocess`](https://python-all.ru/3.4/library/subprocess.html#module-subprocess) предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее использования этой функции. Смотрите раздел [*Замена старых функций модулем subprocess*](https://python-all.ru/3.4/library/subprocess.html#subprocess-replacements) в документации модуля [`subprocess`](https://python-all.ru/3.4/library/subprocess.html#module-subprocess) для полезных примеров.20112012Доступность: Unix, Windows.20132014#### `os.times()`20152016Возвращает текущие глобальные времена процесса. Возвращаемое значение – объект с пятью атрибутами:20172018- `user` – пользовательское время2019- [`system`](https://python-all.ru/3.4/library/os.html#os.system) – системное время2020- `children_user` – пользовательское время всех дочерних процессов2021- `children_system` – системное время всех дочерних процессов2022- `elapsed` – реальное время, прошедшее с фиксированной точки в прошлом20232024Для обратной совместимости этот объект также ведёт себя как кортеж из пяти элементов, содержащий `user`, [`system`](https://python-all.ru/3.4/library/os.html#os.system), `children_user`, `children_system` и `elapsed` в указанном порядке.20252026Смотрите страницу руководства Unix *times(2)* или соответствующую документацию Windows Platform API. В Windows известны только `user` и [`system`](https://python-all.ru/3.4/library/os.html#os.system); остальные атрибуты равны нулю.20272028Доступность: Unix, Windows.20292030Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.20312032#### `os.wait()`20332034Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.20352036Доступность: Unix.20372038#### `os.waitid(idtype, id, options)`20392040Ожидает завершения одного или нескольких дочерних процессов. *idtype* может быть [`P_PID`](https://python-all.ru/3.4/library/os.html#os.P_PID), [`P_PGID`](https://python-all.ru/3.4/library/os.html#os.P_PGID) или [`P_ALL`](https://python-all.ru/3.4/library/os.html#os.P_ALL). *id* задаёт идентификатор процесса для ожидания. *options* формируется с помощью побитового ИЛИ одной или нескольких из [`WEXITED`](https://python-all.ru/3.4/library/os.html#os.WEXITED), [`WSTOPPED`](https://python-all.ru/3.4/library/os.html#os.WSTOPPED) или [`WCONTINUED`](https://python-all.ru/3.4/library/os.html#os.WCONTINUED) и дополнительно может быть объединён с [`WNOHANG`](https://python-all.ru/3.4/library/os.html#os.WNOHANG) или [`WNOWAIT`](https://python-all.ru/3.4/library/os.html#os.WNOWAIT). Возвращаемое значение – объект, представляющий данные, содержащиеся в структуре `siginfo_t`, а именно: `si_pid`, `si_uid`, `si_signo`, `si_status`, `si_code` или `None`, если указан [`WNOHANG`](https://python-all.ru/3.4/library/os.html#os.WNOHANG) и нет дочерних процессов, готовых к ожиданию.20412042Доступность: Unix.20432044Новое в версии 3.3.20452046#### `os.P_PID`20472048#### `os.P_PGID`20492050#### `os.P_ALL`20512052Это возможные значения для *idtype* в [`waitid()`](https://python-all.ru/3.4/library/os.html#os.waitid). Они влияют на то, как интерпретируется *id*.20532054Доступность: Unix.20552056Новое в версии 3.3.20572058#### `os.WEXITED`20592060#### `os.WSTOPPED`20612062#### `os.WNOWAIT`20632064Флаги, которые можно использовать в *options* в [`waitid()`](https://python-all.ru/3.4/library/os.html#os.waitid) и которые указывают, какой сигнал дочернего процесса ожидать.20652066Доступность: Unix.20672068Новое в версии 3.3.20692070#### `os.CLD_EXITED`20712072#### `os.CLD_DUMPED`20732074#### `os.CLD_TRAPPED`20752076#### `os.CLD_CONTINUED`20772078Это возможные значения для `si_code` в результате, возвращаемом [`waitid()`](https://python-all.ru/3.4/library/os.html#os.waitid).20792080Доступность: Unix.20812082Новое в версии 3.3.20832084#### `os.waitpid(pid, options)`20852086Подробности этой функции различаются в Unix и Windows.20872088В Unix: ожидает завершения дочернего процесса с идентификатором *pid* и возвращает кортеж, содержащий его идентификатор и код завершения (закодирован так же, как для [`wait()`](https://python-all.ru/3.4/library/os.html#os.wait)). Семантика вызова зависит от значения целочисленного *options*, которое должно быть `0` для обычного режима.20892090Если *pid* больше `0`, [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid) запрашивает информацию о состоянии для этого конкретного процесса. Если *pid* равен `0`, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если *pid* равен `-1`, запрос относится к любому дочернему процессу текущего процесса. Если *pid* меньше `-1`, состояние запрашивается для любого процесса в группе процессов `-pid` (абсолютное значение *pid*).20912092Исключение [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) возбуждается со значением errno, когда системный вызов возвращает -1.20932094В Windows: ожидает завершения процесса, заданного дескриптором процесса *pid*, и возвращает кортеж, содержащий *pid* и его код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). *pid*, меньше или равный `0`, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного *options* не учитывается. *pid* может ссылаться на любой процесс, чей идентификатор известен, не обязательно дочерний. Функции [`spawn*`](https://python-all.ru/3.4/library/os.html#os.spawnl), вызванные с [`P_NOWAIT`](https://python-all.ru/3.4/library/os.html#os.P_NOWAIT), возвращают подходящие дескрипторы процессов.20952096#### `os.wait3(options)`20972098Аналогично [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid), за исключением того, что аргумент с идентификатором процесса не передаётся, а возвращается кортеж из трёх элементов: идентификатор дочернего процесса, код завершения и информация об использовании ресурсов. Подробнее об информации об использовании ресурсов см. [`resource`](https://python-all.ru/3.4/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/3.4/library/resource.html#resource.getrusage). Аргумент опций – тот же, что передаётся в [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid) и [`wait4()`](https://python-all.ru/3.4/library/os.html#os.wait4).20992100Доступность: Unix.21012102#### `os.wait4(pid, options)`21032104Аналогично [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid), за исключением того, что возвращается кортеж из трёх элементов, содержащий идентификатор дочернего процесса, код завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. [`resource`](https://python-all.ru/3.4/library/resource.html#module-resource).[`getrusage()`](https://python-all.ru/3.4/library/resource.html#resource.getrusage). Аргументы [`wait4()`](https://python-all.ru/3.4/library/os.html#os.wait4) те же, что передаются в [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid).21052106Доступность: Unix.21072108#### `os.WNOHANG`21092110Опция [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid) для немедленного возврата, если статус дочернего процесса недоступен сразу. В этом случае функция возвращает `(0, 0)`.21112112Доступность: Unix.21132114#### `os.WCONTINUED`21152116Эта опция позволяет сообщать о дочерних процессах, если они были возобновлены после остановки управления заданием с момента последнего сообщения их статуса.21172118Доступность: некоторые системы Unix.21192120#### `os.WUNTRACED`21212122Этот параметр заставляет сообщать о дочерних процессах, если они были остановлены, но их текущее состояние ещё не было сообщено с момента остановки.21232124Доступность: Unix.21252126Следующие функции принимают код статуса процесса, возвращаемый [`system()`](https://python-all.ru/3.4/library/os.html#os.system), [`wait()`](https://python-all.ru/3.4/library/os.html#os.wait) или [`waitpid()`](https://python-all.ru/3.4/library/os.html#os.waitpid) в качестве параметра. Они могут использоваться для определения состояния процесса.21272128#### `os.WCOREDUMP(status)`21292130Возвращает `True`, если для процесса был сгенерирован дамп ядра, иначе возвращает `False`.21312132Доступность: Unix.21332134#### `os.WIFCONTINUED(status)`21352136Возвращает `True`, если процесс был возобновлён после остановки управления заданиями, иначе возвращает `False`.21372138Доступность: Unix.21392140#### `os.WIFSTOPPED(status)`21412142Возвращает `True`, если процесс был остановлен, иначе возвращает `False`.21432144Доступность: Unix.21452146#### `os.WIFSIGNALED(status)`21472148Возвращает `True`, если процесс завершился из-за сигнала, иначе возвращает `False`.21492150Доступность: Unix.21512152#### `os.WIFEXITED(status)`21532154Возвращает `True`, если процесс завершился с помощью системного вызова *exit(2)*, иначе возвращает `False`.21552156Доступность: Unix.21572158#### `os.WEXITSTATUS(status)`21592160Если `WIFEXITED(status)` истинно, возвращает целочисленный параметр системного вызова *exit(2)*. В противном случае возвращаемое значение не имеет смысла.21612162Доступность: Unix.21632164#### `os.WSTOPSIG(status)`21652166Возвращает сигнал, который вызвал остановку процесса.21672168Доступность: Unix.21692170#### `os.WTERMSIG(status)`21712172Возвращает сигнал, который вызвал завершение процесса.21732174Доступность: Unix.21752176## 16.1.7. Интерфейс планировщика21772178Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.21792180Новое в версии 3.3.21812182Следующие политики планирования доступны, если они поддерживаются операционной системой.21832184#### `os.SCHED_OTHER`21852186Политика планирования по умолчанию.21872188#### `os.SCHED_BATCH`21892190Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.21912192#### `os.SCHED_IDLE`21932194Политика планирования для фоновых задач с очень низким приоритетом.21952196#### `os.SCHED_SPORADIC`21972198Политика планирования для спорадических серверных программ.21992200#### `os.SCHED_FIFO`22012202Политика планирования «первым пришёл, первым обслужен».22032204#### `os.SCHED_RR`22052206Циклическая политика планирования.22072208#### `os.SCHED_RESET_ON_FORK`22092210Этот флаг можно объединить по ИЛИ с любой другой политикой планирования. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет потомка сбрасываются на значения по умолчанию.22112212#### `class os.sched_param(sched_priority)`22132214Этот класс представляет настраиваемые параметры планирования, используемые в [`sched_setparam()`](https://python-all.ru/3.4/library/os.html#os.sched_setparam), [`sched_setscheduler()`](https://python-all.ru/3.4/library/os.html#os.sched_setscheduler) и [`sched_getparam()`](https://python-all.ru/3.4/library/os.html#os.sched_getparam). Он неизменяем.22152216В настоящее время существует только один возможный параметр:22172218#### `sched_priority`22192220Приоритет планирования для политики планирования.22212222#### `os.sched_get_priority_min(policy)`22232224Возвращает минимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.22252226#### `os.sched_get_priority_max(policy)`22272228Возвращает максимальное значение приоритета для *policy*. *policy* – одна из констант политик планирования, описанных выше.22292230#### `os.sched_setscheduler(pid, policy, param)`22312232Устанавливает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает tекущий процесс. *policy* – одна из констант политик планирования, перечисленных выше. *param* – экземпляр [`sched_param`](https://python-all.ru/3.4/library/os.html#os.sched_param).22332234#### `os.sched_getscheduler(pid)`22352236Возвращает политику планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.22372238#### `os.sched_setparam(pid, param)`22392240Устанавливает параметры планирования для процесса с PID *pid*. Значение *pid*, равное 0, означает tекущий процесс. *param* – экземпляр [`sched_param`](https://python-all.ru/3.4/library/os.html#os.sched_param).22412242#### `os.sched_getparam(pid)`22432244Возвращает параметры планирования в виде экземпляра [`sched_param`](https://python-all.ru/3.4/library/os.html#os.sched_param) для процесса с PID *pid*. Значение *pid*, равное 0, означает текущий процесс.22452246#### `os.sched_rr_get_interval(pid)`22472248Возвращает квант времени (round-robin) в секундах для процесса с PID *pid*. Значение *pid*, равное 0, означает вызывающий процесс.22492250#### `os.sched_yield()`22512252Добровольно освобождает процессор.22532254#### `os.sched_setaffinity(pid, mask)`22552256Ограничивает процесс с PID *pid* (или текущий процесс, если ноль) набором процессоров. Параметр *mask* – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.22572258#### `os.sched_getaffinity(pid)`22592260Возвращает набор процессоров, к которым ограничен процесс с PID *pid* (или текущий процесс, если ноль).22612262## 16.1.8. Разная системная информация22632264#### `os.confstr(name)`22652266Возвращает строковые значения системных конфигураций. *name* задаёт значение конфигурации для получения; это может быть строка – имя определённого системного значения; эти имена указаны в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы определяют также дополнительные имена. Имена, известные операционной системе, представлены как ключи словаря `confstr_names`. Для переменных конфигурации, не включённых в это соответствие, также допускается передача целого числа в качестве *name*.22672268Если значение конфигурации, указанное *name*, не определено, возвращается `None`.22692270Если *name* – строка и неизвестна, возбуждается [`ValueError`](https://python-all.ru/3.4/library/exceptions.html#ValueError). Если конкретное значение для *name* не поддерживается системой, даже если оно включено в `confstr_names`, возбуждается [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError) с [`errno.EINVAL`](https://python-all.ru/3.4/library/errno.html#errno.EINVAL) в качестве кода ошибки.22712272Доступность: Unix.22732274#### `os.confstr_names`22752276Словарь, сопоставляющий имена, принимаемые [`confstr()`](https://python-all.ru/3.4/library/os.html#os.confstr), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе.22772278Доступность: Unix.22792280#### `os.cpu_count()`22812282Возвращает количество процессоров в системе. Возвращает None, если не удаётся определить.22832284Новое в версии 3.4.22852286#### `os.getloadavg()`22872288Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает [`OSError`](https://python-all.ru/3.4/library/exceptions.html#OSError), если среднюю нагрузку не удалось получить.22892290Доступность: Unix.22912292#### `os.sysconf(name)`22932294Возвращает целочисленные значения системных конфигураций. Если значение конфигурации, указанное *name*, не определено, возвращается `-1`. Замечания относительно параметра *name* для [`confstr()`](https://python-all.ru/3.4/library/os.html#os.confstr) применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётся `sysconf_names`.22952296Доступность: Unix.22972298#### `os.sysconf_names`22992300Словарь, сопоставляющий имена, принимаемые [`sysconf()`](https://python-all.ru/3.4/library/os.html#os.sysconf), с целочисленными значениями, определёнными для этих имён операционной системой. Может использоваться для определения набора имён, известных системе.23012302Доступность: Unix.23032304Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.23052306Операции более высокого уровня над путями определены в модуле [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23072308#### `os.curdir`23092310Строковая константа, используемая операционной системой для обозначения текущего каталога. Это `'.'` для Windows и POSIX. Также доступна через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23112312#### `os.pardir`23132314Строковая константа, используемая операционной системой для обозначения родительского каталога. Это `'..'` для Windows и POSIX. Также доступна через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23152316#### `os.sep`23172318Символ, используемый операционной системой для разделения компонентов пути. Это `'/'` для POSIX и `'\\'` для Windows. Обратите внимание, что знания этого недостаточно для разбора или объединения путей – используйте [`os.path.split()`](https://python-all.ru/3.4/library/os.path.html#os.path.split) и [`os.path.join()`](https://python-all.ru/3.4/library/os.path.html#os.path.join), однако это бывает полезно. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23192320#### `os.altsep`23212322Альтернативный символ, используемый операционной системой для разделения компонентов пути, или `None`, если существует только один разделитель. Устанавливается в `'/'` в Windows, где `sep` является обратной косой чертой. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23232324#### `os.extsep`23252326Символ, отделяющий основное имя файла от расширения; например, `'.'` в `os.py`. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23272328#### `os.pathsep`23292330Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в `PATH`), например `':'` для POSIX или `';'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23312332#### `os.defpath`23332334Путь поиска по умолчанию, используемый [`exec*p*`](https://python-all.ru/3.4/library/os.html#os.execl) и [`spawn*p*`](https://python-all.ru/3.4/library/os.html#os.spawnl), если в окружении нет ключа `'PATH'`. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23352336#### `os.linesep`23372338Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например `'\\n'` для POSIX, или несколько символов, например `'\\r\\n'` для Windows. Не используйте *os.linesep* в качестве завершителя строк при записи в файлы, открытые в текстовом режиме (режим по умолчанию); вместо этого используйте одиночный `'\\n'` на всех платформах.23392340#### `os.devnull`23412342Путь к нулевому устройству. Например: `'/dev/null'` для POSIX, `'nul'` для Windows. Также доступен через [`os.path`](https://python-all.ru/3.4/library/os.path.html#module-os.path).23432344#### `os.RTLD_LAZY`23452346#### `os.RTLD_NOW`23472348#### `os.RTLD_GLOBAL`23492350#### `os.RTLD_LOCAL`23512352#### `os.RTLD_NODELETE`23532354#### `os.RTLD_NOLOAD`23552356#### `os.RTLD_DEEPBIND`23572358Флаги для использования с функциями [`setdlopenflags()`](https://python-all.ru/3.4/library/sys.html#sys.setdlopenflags) и [`getdlopenflags()`](https://python-all.ru/3.4/library/sys.html#sys.getdlopenflags). Смотрите страницу руководства Unix *dlopen(3)* для ознакомления со значениями различных флагов.23592360Новое в версии 3.3.23612362## 16.1.9. Разные функции23632364#### `os.urandom(n)`23652366Возвращает строку из *n* случайных байтов, пригодных для криптографического использования.23672368Эта функция возвращает случайные байты из источника случайности, зависящего от ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС. В Unix-подобных системах она обращается к `/dev/urandom`, а в Windows использует `CryptGenRandom()`. Если источник случайности не найден, возбуждается [`NotImplementedError`](https://python-all.ru/3.4/library/exceptions.html#NotImplementedError).23692370Для удобного интерфейса к генератору случайных чисел, предоставляемому вашей платформой, смотрите [`random.SystemRandom`](https://python-all.ru/3.4/library/random.html#random.SystemRandom).2371