Содержание страницы
os – Различные интерфейсы операционной системы¶os – Miscellaneous operating system interfaces
Исходный код: Lib/os.py
Этот модуль предоставляет переносимый способ использования функций, зависящих от операционной системы. Если нужно просто прочитать или записать файл, см. open(); для работы с путями используйте модуль os.path; для чтения всех строк из всех файлов в командной строке – модуль fileinput. Для создания временных файлов и каталогов обратитесь к модулю tempfile, а для высокоуровневой работы с файлами и каталогами – к модулю shutil.
Примечания о доступности этих функций:
Все встроенные модули Python, зависящие от операционной системы, устроены так, что при наличии одинаковой функциональности они используют один и тот же интерфейс; например, функция
os.stat(path)возвращает информацию stat о пути в одном и том же формате (который, как вышло, берёт начало от интерфейса POSIX).Расширения, характерные для конкретной операционной системы, также доступны через модуль
os, но их использование, конечно, угрожает переносимости.Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.
На VxWorks os.popen, os.fork, os.execv и os.spawn*p* не поддерживаются.
На платформах WebAssembly
wasm32-emscriptenиwasm32-wasi, большая часть модуляosнедоступна или работает иначе. API, связанные с процессами (например,fork(),execve()), сигналами (например,kill(),wait()) и ресурсами (например,nice()), недоступны. Другие функции, такие какgetuid()иgetpid(), эмулируются или являются заглушками.
Примечание
Все функции в этом модуле возбуждают OSError (или его подклассы) в случае недопустимых или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.
- os.name¶
Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена:
'posix','nt','java'.См. также
sys.platformимеет более мелкую гранулярность.os.uname()предоставляет системно-зависимую информацию о версии.Модуль
platformпредоставляет подробные проверки идентификации системы.
Имена файлов, аргументы командной строки и переменные окружения¶File Names, Command Line Arguments, and Environment Variables
В Python имена файлов, аргументы командной строки и переменные окружения представлены строковым типом. В некоторых системах перед передачей их операционной системе необходимо декодировать эти строки в байты и обратно. Python использует кодировку файловой системы и обработчик ошибок для выполнения этого преобразования (см. sys.getfilesystemencoding()).
Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors объекта PyConfig.
Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться неудачей. В этом случае Python использует обработчик ошибок кодирования surrogateescape, что означает, что недекодируемые байты заменяются символом Unicode U+DCxx при декодировании, и при кодировании они снова преобразуются в исходный байт.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может предоставить такую гарантию, функции API могут возбуждать UnicodeError.
См. также кодировку локали.
Режим UTF-8 в Python¶Python UTF-8 Mode
Новое в версии 3.7: См. PEP 540 для получения дополнительных сведений.
Режим UTF-8 в Python игнорирует кодировку локали и принудительно использует кодировку UTF-8:
Использовать UTF-8 в качестве кодировки файловой системы.
sys.getfilesystemencoding()возвращает'utf-8'.locale.getpreferredencoding()возвращает'utf-8'(аргумент do_setlocale не имеет эффекта).sys.stdin,sys.stdoutиsys.stderrвсе используют UTF-8 в качестве текстовой кодировки, при этомsurrogateescapeобработчик ошибок включён дляsys.stdinиsys.stdout(sys.stderrпродолжает использоватьbackslashreplace, как и в режиме по умолчанию с учётом локали)В Unix
os.device_encoding()возвращает'utf-8'вместо кодировки устройства.
Обратите внимание: настройки стандартных потоков в режиме UTF-8 могут быть переопределены с помощью PYTHONIOENCODING (как и в режиме по умолчанию с учётом локали).
Вследствие изменений в этих низкоуровневых API другие высокоуровневые API также демонстрируют другое поведение по умолчанию:
Аргументы командной строки, переменные окружения и имена файлов декодируются в текст с использованием кодировки UTF-8.
os.fsdecode()иos.fsencode()используют кодировку UTF-8.open(),io.open()иcodecs.open()по умолчанию используют кодировку UTF-8. Однако по умолчанию они также используют строгий обработчик ошибок, так что попытка открыть двоичный файл в текстовом режиме, скорее всего, вызовет исключение, а не вернёт бессмысленные данные.
Режим UTF-8 Python включается, если при запуске Python локаль LC_CTYPE равна C или POSIX (см. функцию PyConfig_Read()).
Его можно включить или отключить с помощью параметра командной строки -X utf8 и переменной окружения PYTHONUTF8.
Если переменная окружения PYTHONUTF8 вообще не задана, интерпретатор по умолчанию использует текущие настройки локали, если только текущая локаль не определена как устаревшая локаль на основе ASCII (как описано для PYTHONCOERCECLOCALE), а приведение локали либо отключено, либо не срабатывает. В таких устаревших локалях интерпретатор по умолчанию будет включать режим UTF-8, если только явно не указано иное.
Режим UTF-8 Python можно включить только при запуске Python. Его значение можно прочитать из sys.flags.utf8_mode.
См. также режим UTF-8 в Windows и кодировку файловой системы и обработчик ошибок.
См. также
- PEP 686
Python 3.15 сделает режим UTF-8 Python режимом по умолчанию.
Параметры процесса¶Process Parameters
Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.
- os.ctermid()¶
Возвращает имя файла, соответствующее управляющему терминалу процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.environ¶
Объект отображения, ключи и значения которого являются строками, представляющими окружение процесса. Например,
environ['HOME']– это путь к вашему домашнему каталогу (на некоторых платформах), что эквивалентноgetenv("HOME")в C.Это отображение захватывается при первом импорте модуля
os, обычно во время запуска Python при обработкеsite.py. Изменения окружения, сделанные после этого момента, не отражаются вos.environ, за исключением изменений, выполненных путём прямого измененияos.environ.Это отображение можно использовать как для запроса окружения, так и для его изменения.
putenv()будет вызываться автоматически при изменении отображения.В Unix ключи и значения используют
sys.getfilesystemencoding()и обработчик ошибок'surrogateescape'. Используйтеenvironb, если требуется другая кодировка.В Windows ключи преобразуются в верхний регистр. Это также относится к получению, установке или удалению элемента. Например,
environ['monty'] = 'python'сопоставляет ключ'MONTY'со значением'python'.Примечание
Вызов
putenv()напрямую не изменяетos.environ, поэтому лучше изменятьos.environ.Примечание
На некоторых платформах, включая FreeBSD и macOS, установка
environможет приводить к утечкам памяти. Обратитесь к системной документации поputenv().Можно удалять элементы из этого отображения, чтобы исключать переменные окружения.
unsetenv()будет вызываться автоматически при удалении элемента изos.environ, а также при вызове одного из методовpop()илиclear().Изменено в версии 3.9: Обновлено для поддержки операторов объединения (
|) и обновления (|=) из PEP 584.
- os.environb¶
Байтовая версия
environ: объект отображения, где и ключи, и значения являются объектамиbytes, представляющими окружение процесса.environиenvironbсинхронизированы (изменениеenvironbобновляетenviron, и наоборот).environbдоступен только в том случае, еслиsupports_bytes_environравенTrue.Новое в версии 3.2.
Изменено в версии 3.9: Обновлено для поддержки операторов объединения (
|) и обновления (|=) из PEP 584.
- os.chdir(path)
- os.fchdir(fd)
- os.getcwd()
Эти функции описаны в Files and Directories.
- os.fsencode(filename)¶
Кодирует path-like имя файла в кодировку файловой системы и обработчик ошибок; возвращает
bytesбез изменений.fsdecode()– обратная функция.Новое в версии 3.2.
Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс
os.PathLike.
- os.fsdecode(filename)¶
Декодирует path-like имя файла из кодировки файловой системы и обработчика ошибок; возвращает
strбез изменений.fsencode()– обратная функция.Новое в версии 3.2.
Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс
os.PathLike.
- os.fspath(path)¶
Возвращает представление пути в файловой системе.
Если переданы
strилиbytes, они возвращаются без изменений. В противном случае вызывается__fspath__(), и её значение возвращается, если оно является объектомstrилиbytes. Во всех остальных случаях вызываетсяTypeError.Новое в версии 3.6.
- class os.PathLike¶
Абстрактный базовый класс для объектов, представляющих путь в файловой системе, например,
pathlib.PurePath.Новое в версии 3.6.
- os.getenv(key, default=None)¶
Возвращает значение переменной окружения key в виде строки, если она существует, или default в противном случае. key – строка. Обратите внимание, что поскольку
getenv()используетos.environ, отображениеgetenv()также фиксируется при импорте, и функция может не отражать будущие изменения окружения.В Unix ключи и значения декодируются с помощью
sys.getfilesystemencoding()и обработчика ошибок'surrogateescape'. Используйтеos.getenvb(), если tребуется другая кодировка.Доступность: Unix, Windows.
- os.getenvb(key, default=None)¶
Возвращает значение переменной окружения key в виде байтов, если она существует, или default в противном случае. key должен быть байтами. Обратите внимание, что поскольку
getenvb()используетos.environb, отображениеgetenvb()также фиксируется при импорте, и функция может не отражать будущие изменения окружения.getenvb()доступна только еслиsupports_bytes_environравенTrue.Доступность: Unix.
Новое в версии 3.2.
- os.get_exec_path(env=None)¶
Возвращает список каталогов, в которых будет выполняться поиск указанного исполняемого файла, аналогично оболочке, при запуске процесса. env, если указан, должен быть словарём переменных окружения, в котором искать PATH. По умолчанию, когда env равен
None, используетсяenviron.Новое в версии 3.2.
- os.getegid()¶
Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.
Доступность: Unix, не Emscripten, не WASI.
- os.geteuid()¶
Возвращает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.getgid()¶
Возвращает реальный идентификатор группы текущего процесса.
Доступность: Unix.
Функция является заглушкой на Emscripten и WASI, см. платформы WebAssembly для получения дополнительной информации.
- os.getgrouplist(user, group, /)¶
Возвращает список идентификаторов групп, к которым принадлежит пользователь user. Если group нет в списке, он добавляется; обычно group задаётся как поле идентификатора группы из записи пароля для user, потому что иначе этот идентификатор группы может быть пропущен.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.getgroups()¶
Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.
Доступность: Unix, не Emscripten, не WASI.
Примечание
На macOS поведение
getgroups()несколько отличается от других Unix-платформ. Если интерпретатор Python был собран с целевой версией развёртывания10.5или более ранней,getgroups()возвращает список эффективных идентификаторов групп, связанных с текущим пользовательским процессом; этот список ограничен системно определённым количеством записей, обычно 16, и может быть изменён вызовамиsetgroups()при наличии соответствующих привилегий. Если сборка выполнена с целевой версией развёртывания выше10.5,getgroups()возвращает текущий список доступа к группам для пользователя, связанного с эффективным идентификатором пользователя процесса; список доступа к группам может меняться в течение времени жизни процесса, на него не влияют вызовыsetgroups(), и его длина не ограничена 16. Значение целевой версии развёртывания,MACOSX_DEPLOYMENT_TARGET, можно получить с помощьюsysconfig.get_config_var().
- os.getlogin()¶
Return the name of the user logged in on the controlling terminal of the process. For most purposes, it is more useful to use
getpass.getuser()since the latter checks the environment variablesLOGNAMEorUSERNAMEto find out who the user is, and falls back topwd.getpwuid(os.getuid())[0]to get the login name of the current real user id.Доступность: Unix, Windows, не Emscripten, не WASI.
- os.getpgid(pid)¶
Возвращает идентификатор группы процессов для процесса с идентификатором pid. Если pid равен 0, возвращается идентификатор группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.getpgrp()¶
Возвращает идентификатор текущей группы процессов.
Доступность: Unix, не Emscripten, не WASI.
- os.getpid()¶
Возвращает идентификатор текущего процесса.
Функция является заглушкой на Emscripten и WASI, см. платформы WebAssembly для получения дополнительной информации.
- os.getppid()¶
Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), а в Windows – тот же самый идентификатор, который к тому моменту может быть уже занят другим процессом.
Доступность: Unix, Windows, не Emscripten, не WASI.
Изменено в версии 3.2: Добавлена поддержка Windows.
- os.getpriority(which, who)¶
Получает приоритет планирования программы. Значение which – одно из
PRIO_PROCESS,PRIO_PGRPилиPRIO_USER, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS, идентификатор группы процессов дляPRIO_PGRPи идентификатор пользователя дляPRIO_USER). Нулевое значение who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
Параметры для функций
getpriority()иsetpriority().Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.getresuid()¶
Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.2.
- os.getresgid()¶
Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.2.
- os.getuid()¶
Возвращает реальный идентификатор пользователя текущего процесса.
Доступность: Unix.
Функция является заглушкой на Emscripten и WASI, см. платформы WebAssembly для получения дополнительной информации.
- os.initgroups(username, gid, /)¶
Вызывает системную функцию initgroups() для инициализации списка доступа к группам, который включает все группы, в которые входит указанное имя пользователя, а также указанный идентификатор группы.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.2.
- os.putenv(key, value, /)¶
Устанавливает переменную окружения с именем key в строку value. Такие изменения окружения влияют на подпроцессы, запущенные с помощью
os.system(),popen()илиfork()иexecv().Присваивания элементам
os.environавтоматически преобразуются в соответствующие вызовыputenv(); однако вызовыputenv()не обновляютos.environ, поэтому на практике предпочтительнее присваивать значения элементамos.environ. Это также относится кgetenv()иgetenvb(), которые в своей реализации используютos.environиos.environbсоответственно.Примечание
На некоторых платформах, включая FreeBSD и macOS, установка
environможет вызывать утечки памяти. Обратитесь к системной документации поputenv().Возбуждает событие аудита
os.putenvс аргументамиkey,value.Изменено в версии 3.9: Теперь функция всегда доступна.
- os.setegid(egid, /)¶
Устанавливает эффективный идентификатор группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.seteuid(euid, /)¶
Устанавливает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.setgid(gid, /)¶
Устанавливает идентификатор группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.setgroups(groups, /)¶
Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, в groups. groups должен быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.
Доступность: Unix, не Emscripten, не WASI.
Примечание
В macOS длина groups не может превышать определённое системой максимальное количество эффективных идентификаторов групп, обычно 16. См. документацию по
getgroups()для случаев, когда может возвращаться не тот же список групп, который был установлен вызовом setgroups().
- os.setpgrp()¶
Вызывает системный вызов
setpgrp()илиsetpgrp(0, 0)в зависимости от того, какая версия реализована (если таковая имеется). За семантикой обращайтесь к руководству Unix.Доступность: Unix, не Emscripten, не WASI.
- os.setpgid(pid, pgrp, /)¶
Вызывает системный вызов
setpgid(), чтобы установить идентификатор группы процессов процесса с идентификатором pid равным группе процессов с идентификатором pgrp. За семантикой обращайтесь к руководству Unix.Доступность: Unix, не Emscripten, не WASI.
- os.setpriority(which, who, priority)¶
Устанавливает приоритет планирования программы. Значение which – одно из
PRIO_PROCESS,PRIO_PGRPилиPRIO_USER, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS, идентификатор группы процессов дляPRIO_PGRPи идентификатор пользователя дляPRIO_USER). Нулевое значение для who обозначает (соответственно): вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. priority – значение в диапазоне от -20 до 19. Приоритет по умолчанию – 0; меньшие значения приоритета приводят к более благоприятному планированию.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.setregid(rgid, egid, /)¶
Устанавливает реальный и эффективный идентификаторы группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.setresgid(rgid, egid, sgid, /)¶
Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.2.
- os.setresuid(ruid, euid, suid, /)¶
Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.2.
- os.setreuid(ruid, euid, /)¶
Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.getsid(pid, /)¶
Вызывает системный вызов
getsid(). За семантикой обращайтесь к руководству Unix.Доступность: Unix, не Emscripten, не WASI.
- os.setsid()¶
Вызывает системный вызов
setsid(). За семантикой обращайтесь к руководству Unix.Доступность: Unix, не Emscripten, не WASI.
- os.setuid(uid, /)¶
Устанавливает идентификатор пользователя текущего процесса.
Доступность: Unix, не Emscripten, не WASI.
- os.strerror(code, /)¶
Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где
strerror()возвращаетNULLпри неизвестном номере ошибки, возбуждаетсяValueError.
- os.supports_bytes_environ¶
Trueесли нативный тип ОС окружения – bytes (например,Falseна Windows).Новое в версии 3.2.
- os.umask(mask, /)¶
Устанавливает текущую числовую umask и возвращает предыдущую umask.
Функция является заглушкой на Emscripten и WASI, см. платформы WebAssembly для получения дополнительной информации.
- os.uname()¶
Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение – объект с пятью атрибутами:
sysname– имя операционной системыnodename– имя машины в сети (определяется реализацией)release– выпуск операционной системыversion– версия операционной системыmachine– идентификатор оборудования
Для обратной совместимости этот объект также является итерируемым и ведёт себя как кортеж из пяти элементов, содержащий
sysname,nodename,release,versionиmachineв указанном порядке.Некоторые системы усекают
nodenameдо 8 символов или до первой компоненты; лучший способ получить имя хоста – этоsocket.gethostname()или дажеsocket.gethostbyaddr(socket.gethostname()).Доступность: Unix.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.
- os.unsetenv(key, /)¶
Удаляет (сбрасывает) переменную окружения с именем key. Такие изменения окружения влияют на подпроцессы, запущенные с помощью
os.system(),popen()илиfork()иexecv().Удаление элементов из
os.environавтоматически преобразуется в соответствующий вызовunsetenv(); однако вызовыunsetenv()не обновляютos.environ, поэтому на самом деле предпочтительнее удалять элементы изos.environ.Вызывает событие аудита
os.unsetenvс аргументомkey.Изменено в версии 3.9: Функция теперь всегда доступна, а также доступна на Windows.
Создание файловых объектов¶File Object Creation
Эти функции создают новые файловые объекты. (См. также
open() для открытия файловых дескрипторов.)
Операции с файловыми дескрипторами¶File Descriptor Operations
Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.
Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.
Метод fileno() можно использовать для получения файлового дескриптора,
связанного с файловым объектом при необходимости. Обратите внимание, что прямое использование файлового
дескриптора обходит методы файлового объекта, игнорируя такие аспекты, как
внутренняя буферизация данных.
- os.close(fd)¶
Закрывает файловый дескриптор fd.
- os.closerange(fd_low, fd_high, /)¶
Закрывает все файловые дескрипторы от fd_low (включительно) до fd_high (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
- os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)¶
Копирует count байт из файлового дескриптора src, начиная со смещения offset_src, в файловый дескриптор dst, начиная со смещения offset_dst. Если offset_src равно None, то src читается с текущей позиции; аналогично для offset_dst. Файлы, на которые указывают src и dst, должны находиться в одной файловой системе, иначе
OSErrorбудет вызвано сerrno, установленным вerrno.EXDEV.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в бинарном режиме.
Возвращаемое значение – количество скопированных байт. Оно может быть меньше запрошенного объёма.
Доступность: Linux >= 4.5 с glibc >= 2.27.
Новое в версии 3.8.
- os.device_encoding(fd)¶
Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; иначе возвращает
None.На Unix, если включён режим Python UTF-8, возвращает
'UTF-8'вместо кодировки устройства.Изменено в версии 3.10: На Unix функция теперь реализует режим Python UTF-8.
- os.dup(fd, /)¶
Возвращает дубликат файлового дескриптора fd. Новый файловый дескриптор является ненаследуемым.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый файловый дескриптор является наследуемым.
Доступность: не WASI.
Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
- os.dup2(fd, fd2, inheritable=True)¶
Дублирует файловый дескриптор fd в fd2, предварительно закрывая последний, если необходимо. Возвращает fd2. Новый файловый дескриптор по умолчанию является наследуемым или ненаследуемым, если inheritable равно
False.Доступность: не WASI.
Изменено в версии 3.4: Добавлен необязательный параметр inheritable.
Изменено в версии 3.7: Возвращает fd2 при успехе. Ранее всегда возвращалось
None.
- os.fchmod(fd, mode)¶
Изменяет режим файла, заданного fd, на числовой mode. См. документацию
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(fd, mode).Вызывает событие аудита
os.chmodс аргументамиpath,mode,dir_fd.Доступность: Unix.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
- os.fchown(fd, uid, gid)¶
Изменяет идентификаторы владельца и группы файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См.
chown(). Начиная с Python 3.3, это эквивалентноos.chown(fd, uid, gid).Возбуждает событие аудита
os.chownс аргументамиpath,uid,gid,dir_fd.Доступность: Unix.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
- os.fdatasync(fd)¶
Принудительная запись файла с файловым дескриптором fd на диск. Не принуждает к обновлению метаданных.
Доступность: Unix.
Примечание
Эта функция недоступна в MacOS.
- os.fpathconf(fd, name, /)¶
Возвращает информацию о системной конфигурации, относящуюся к открытому файлу. name задаёт значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и другие). Некоторые платформы определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре
pathconf_names. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для name.Если name – строка и не известна, возбуждается исключение
ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно присутствует вpathconf_names, возбуждается исключениеOSErrorсerrno.EINVALв качестве кода ошибки.Начиная с Python 3.3, это эквивалентно
os.pathconf(fd, name).Доступность: Unix.
- os.fstat(fd)¶
Получить статус файлового дескриптора fd. Возвращает объект
stat_result.Начиная с Python 3.3, это эквивалентно
os.stat(fd).См. также
Функция
stat().
- os.fstatvfs(fd, /)¶
Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором fd, как
statvfs(). Начиная с Python 3.3, это eквивалентноos.statvfs(fd).Доступность: Unix.
- os.fsync(fd)¶
Принудительно записывает файл с файловым дескриптором fd на диск. В Unix вызывает нативную функцию
fsync(); в Windows – функцию MS_commit().Если работа ведётся с буферизованным файловым объектом Python file object f, сначала следует выполнить
f.flush(), а затемos.fsync(f.fileno()), чтобы гарантировать запись на диск всех внутренних буферов, связанных с f.Доступность: Unix, Windows.
- os.ftruncate(fd, length, /)¶
Обрезает файл, соответствующий файловому дескриптору fd, так, чтобы его размер не превышал length байт. Начиная с Python 3.3, это эквивалентно
os.truncate(fd, length).Возбуждает событие аудита
os.truncateс аргументамиfd,length.Доступность: Unix, Windows.
Изменено в версии 3.5: Добавлена поддержка Windows
- os.get_blocking(fd, /)¶
Возвращает блокирующий режим файлового дескриптора:
False, если установлен флагO_NONBLOCK, иTrue, если флаг сброшен.См. также
set_blocking()иsocket.socket.setblocking().Доступность: Unix.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
Новое в версии 3.5.
- os.isatty(fd, /)¶
Возвращает
True, если файловый дескриптор fd открыт и подключён к устройству типа tty, иначеFalse.
- os.lockf(fd, cmd, len, /)¶
Применяет, проверяет или удаляет POSIX-блокировку на открытом файловом дескрипторе. fd – открытый файловый дескриптор. cmd задаёт команду: одну из
F_LOCK,F_TLOCK,F_ULOCKилиF_TEST. len задаёт участок файла для блокировки.Вызывает событие аудита
os.lockfс аргументамиfd,cmd,len.Доступность: Unix.
Новое в версии 3.3.
- os.F_LOCK¶
- os.F_TLOCK¶
- os.F_ULOCK¶
- os.F_TEST¶
Флаги, указывающие, какое действие выполнит
lockf().Доступность: Unix.
Новое в версии 3.3.
- os.login_tty(fd, /)¶
Подготавливает tty, чей файловый дескриптор равен fd, для нового сеанса входа в систему. Делает вызывающий процесс лидером сеанса; делает tty управляющим tty, stdin, stdout и stderr вызывающего процесса; закрывает fd.
Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.11.
- os.lseek(fd, pos, whence, /)¶
Устанавливает текущую позицию файлового дескриптора fd в позицию pos, изменённую согласно whence, и возвращает новую позицию в байтах относительно начала файла. Допустимые значения для whence:
SEEK_SETили0– устанавливает pos относительно начала файлаSEEK_CURили1– устанавливает pos относительно текущей позиции файлаSEEK_ENDили2– устанавливает pos относительно конца файлаSEEK_HOLE– устанавливает pos на следующую позицию данных относительно posSEEK_DATA– устанавливает pos на следующую дыру данных относительно pos
Изменено в версии 3.3: Добавлена поддержка
SEEK_HOLEиSEEK_DATA.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Параметры для функции
lseek()и методаseek()на объектах, подобных файлам, для whence при настройке указателя позиции файла.SEEK_SETНастраивает позицию файла относительно начала файла.
SEEK_CURНастраивает позицию файла относительно текущей позиции файла.
SEEK_ENDНастраивает позицию файла относительно конца файла.
Их значения: 0, 1 и 2 соответственно.
- os.SEEK_HOLE¶
- os.SEEK_DATA¶
Параметры для функции
lseek()и методаseek()на объектах, подобных файлам, для поиска данных и дыр в разреженных файлах.SEEK_DATAНастраивает смещение файла на следующую позицию, содержащую данные, относительно текущей позиции поиска.
SEEK_HOLEНастраивает смещение файла на следующую позицию, содержащую дыру, относительно текущей позиции поиска. Дыра определяется как последовательность нулей.
Примечание
Эти операции имеют смысл только для файловых систем, которые их поддерживают.
Доступность: Linux >= 3.1, macOS, Unix
Новое в версии 3.3.
- os.open(path, flags, mode=0o777, *, dir_fd=None)¶
Открывает файл path и устанавливает различные флаги в соответствии с flags и, возможно, его режим в соответствии с mode. При вычислении mode текущее значение umask сначала маскируется. Возвращает файловый дескриптор для вновь открытого файла. Новый файловый дескриптор не наследуется.
Описание значений флагов и режимов см. в документации библиотеки времени выполнения C; константы флагов (например,
O_RDONLYиO_WRONLY) определены в модулеos. В частности, в Windows необходимо добавитьO_BINARYдля открытия файлов в двоичном режиме.Эта функция поддерживает пути относительно файловых дескрипторов каталогов с помощью параметра dir_fd.
Вызывает событие аудита
openс аргументамиpath,mode,flags.Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию
open(), которая возвращает файловый объект с методамиread()иwrite()(и многими другими). Чтобы обернуть файловый дескриптор в файловый объект, используйтеfdopen().Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).Изменено в версии 3.6: Принимает объект, подобный пути.
Следующие константы являются значениями параметра flags функции
open(). Их можно комбинировать с помощью оператора побитового ИЛИ
|. Некоторые из них доступны не на всех платформах. Описание их
доступности и использования см. в справочной странице open(2) в Unix
или в MSDN в Windows.
- os.O_RDONLY¶
- os.O_WRONLY¶
- os.O_RDWR¶
- os.O_APPEND¶
- os.O_CREAT¶
- os.O_EXCL¶
- os.O_TRUNC¶
Приведённые выше константы доступны в Unix и Windows.
- os.O_DSYNC¶
- os.O_RSYNC¶
- os.O_SYNC¶
- os.O_NDELAY¶
- os.O_NONBLOCK¶
- os.O_NOCTTY¶
- os.O_CLOEXEC¶
Приведённые выше константы доступны только в Unix.
Изменено в версии 3.3: добавлена константа
O_CLOEXEC.
- os.O_BINARY¶
- os.O_NOINHERIT¶
- os.O_SHORT_LIVED¶
- os.O_TEMPORARY¶
- os.O_RANDOM¶
- os.O_SEQUENTIAL¶
- os.O_TEXT¶
Приведённые выше константы доступны только в Windows.
- os.O_EVTONLY¶
- os.O_FSYNC¶
- os.O_SYMLINK¶
- os.O_NOFOLLOW_ANY¶
Приведённые выше константы доступны только в macOS.
Изменено в версии 3.10: добавлены константы
O_EVTONLY,O_FSYNC,O_SYMLINKиO_NOFOLLOW_ANY.
- os.O_ASYNC¶
- os.O_DIRECT¶
- os.O_DIRECTORY¶
- os.O_NOFOLLOW¶
- os.O_NOATIME¶
- os.O_PATH¶
- os.O_TMPFILE¶
- os.O_SHLOCK¶
- os.O_EXLOCK¶
Вышеуказанные константы являются расширениями и отсутствуют, если не определены библиотекой C.
- os.openpty()¶
Открывает новую пару псевдотерминалов. Возвращает пару файловых дескрипторов
(master, slave)для pty и tty соответственно. Новые файловые дескрипторы являются ненаследуемыми. Для (чуть более) переносимого подхода используйте модульpty.Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.
- os.pipe()¶
Создаёт канал. Возвращает пару файловых дескрипторов
(r, w), пригодных для чтения и записи соответственно. Новый файловый дескриптор является ненаследуемым.Доступность: Unix, Windows.
Изменено в версии 3.4: Новые файловые дескрипторы теперь являются ненаследуемыми.
- os.pipe2(flags, /)¶
Создаёт канал с атомарной установкой flags. flags можно составить с помощью логического ИЛИ одной или нескольких из этих констант:
O_NONBLOCK,O_CLOEXEC. Возвращает пару файловых дескрипторов(r, w), пригодных для чтения и записи соответственно.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.posix_fallocate(fd, offset, len, /)¶
Гарантирует, что для файла, указанного в fd, выделено достаточно дискового пространства, начиная с offset и продолжаясь на len байтов.
Доступность: Unix, не Emscripten.
Новое в версии 3.3.
- os.posix_fadvise(fd, offset, len, advice, /)¶
Объявляет о намерении получить доступ к данным по определённому шаблону, что позволяет ядру выполнять оптимизации. Совет применяется к области файла, указанной в fd, начиная с offset и продолжаясь на len байтов. advice может быть одним из
POSIX_FADV_NORMAL,POSIX_FADV_SEQUENTIAL,POSIX_FADV_RANDOM,POSIX_FADV_NOREUSE,POSIX_FADV_WILLNEEDилиPOSIX_FADV_DONTNEED.Доступность: Unix.
Новое в версии 3.3.
- os.POSIX_FADV_NORMAL¶
- os.POSIX_FADV_SEQUENTIAL¶
- os.POSIX_FADV_RANDOM¶
- os.POSIX_FADV_NOREUSE¶
- os.POSIX_FADV_WILLNEED¶
- os.POSIX_FADV_DONTNEED¶
Флаги, которые можно использовать в advice в
posix_fadvise(), указывающие шаблон доступа, который, вероятно, будет использоваться.Доступность: Unix.
Новое в версии 3.3.
- os.pread(fd, n, offset, /)¶
Читает не более n байтов из файлового дескриптора fd в позиции offset, не изменяя файловое смещение.
Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного fd, возвращается пустой байтовый объект.
Доступность: Unix.
Новое в версии 3.3.
- os.preadv(fd, buffers, offset, flags=0, /)¶
Читает из файлового дескриптора fd в позиции offset в изменяемые байтоподобные объекты buffers, оставляя файловое смещение неизменным. Данные передаются в каждый буфер до его заполнения, после чего осуществляется переход к следующему буферу в последовательности для сохранения оставшихся данных.
Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:
Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.
Операционная система может устанавливать ограничение (значение
sysconf()'SC_IOV_MAX') на количество буферов, которые можно использовать.Объединяет функциональность
os.readv()иos.pread().Доступность: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
Использование флагов требует Linux >= 4.6.
Добавлено в версии 3.7.
- os.RWF_NOWAIT¶
Не ждать данные, которые не доступны немедленно. Если указан этот флаг, системный вызов вернётся немедленно, если пришлось бы читать данные из резервного хранилища или ждать блокировку.
Если какие-то данные были успешно прочитаны, возвращается количество прочитанных байт. Если не было прочитано ни одного байта, возвращается
-1и устанавливается errno вerrno.EAGAIN.Доступность: Linux >= 4.14.
Добавлено в версии 3.7.
- os.RWF_HIPRI¶
Чтение/запись с высоким приоритетом. Позволяет блочным файловым системам использовать опрос устройства, что обеспечивает меньшую задержку, но может потреблять дополнительные ресурсы.
В настоящее время в Linux эта возможность доступна только для файлового дескриптора, открытого с использованием флага
O_DIRECT.Доступность: Linux >= 4.6.
Добавлено в версии 3.7.
- os.pwrite(fd, str, offset, /)¶
Записывает байтовую строку из str в файловый дескриптор fd в позиции offset, оставляя файловое смещение неизменным.
Возвращает количество байтов, фактически записанных.
Доступность: Unix.
Новое в версии 3.3.
- os.pwritev(fd, buffers, offset, flags=0, /)¶
Записывает содержимое buffers в файловый дескриптор fd по смещению offset, не изменяя текущее смещение файла. buffers должен быть последовательностью байтоподобных объектов. Буферы обрабатываются в порядке массива. Сначала записывается всё содержимое первого буфера, затем второго и так далее.
Аргумент flags содержит побитовое ИЛИ нуля или более следующих флагов:
Возвращает общее количество реально записанных байт.
Операционная система может устанавливать ограничение (значение
sysconf()'SC_IOV_MAX') на количество буферов, которые можно использовать.Объединяет функциональность
os.writev()иos.pwrite().Доступность: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
Использование флагов требует Linux >= 4.6.
Добавлено в версии 3.7.
- os.RWF_DSYNC¶
Предоставляет эквивалент флага
O_DSYNCos.open()для отдельной операции записи. Действие этого флага распространяется только на диапазон данных, записываемых системным вызовом.Доступность: Linux >= 4.7.
Добавлено в версии 3.7.
- os.RWF_SYNC¶
Предоставляет эквивалент флага
O_SYNCos.open()для отдельной операции записи. Действие этого флага распространяется только на диапазон данных, записываемых системным вызовом.Доступность: Linux >= 4.7.
Добавлено в версии 3.7.
- os.RWF_APPEND¶
Предоставляет эквивалент флага
O_APPENDos.open()для отдельной операции записи. Этот флаг имеет смысл только дляos.pwritev(), и его действие распространяется только на диапазон данных, записываемых системным вызовом. Аргумент смещение не влияет на операцию записи; данные всегда добавляются в конец файла. Однако если аргумент смещение равен-1, текущее смещение в файле обновляется.Доступность: Linux >= 4.16.
Новое в версии 3.10.
- os.read(fd, n, /)¶
Читает не более n байт из файлового дескриптора fd.
Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного fd, возвращается пустой байтовый объект.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому
os.open()илиpipe(). Чтобы прочитать «файловый объект», возвращаемый встроенной функциейopen()илиpopen()илиfdopen(), илиsys.stdin, используйте его методыread()илиreadline().Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).
- os.sendfile(out_fd, in_fd, offset, count)¶
- os.sendfile(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0)
Копирует count байт из файлового дескриптора in_fd в файловый дескриптор out_fd начиная с смещения. Возвращает количество отправленных байт. Когда достигнут конец файла, возвращается
0.Первая форма записи функции поддерживается на всех платформах, которые определяют
sendfile().В Linux, если смещение задано как
None, байты считываются из текущей позиции in_fd, и позиция in_fd обновляется.Второй случай может использоваться в macOS и FreeBSD, где headers и trailers – произвольные последовательности буферов, которые записываются до и после данных из in_fd. Возвращает то же, что и первый случай.
В macOS и FreeBSD значение
0для count означает отправку до тех пор, пока не будет достигнут конец in_fd.Все платформы поддерживают сокеты в качестве файлового дескриптора out_fd, а некоторые платформы также допускают другие типы (например, обычный файл, канал).
Кроссплатформенным приложениям не следует использовать аргументы headers, trailers и flags.
Доступность: Unix, не Emscripten, не WASI.
Примечание
Для высокоуровневой обёртки над
sendfile()см.socket.socket.sendfile().Новое в версии 3.3.
Изменено в версии 3.9: Параметры out и in переименованы в out_fd и in_fd.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
Параметры функции
sendfile(), если реализация их поддерживает.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.SF_NOCACHE¶
Параметр функции
sendfile(), если реализация его поддерживает. Данные не будут кэшироваться в виртуальной памяти и будут освобождены после использования.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.11.
- os.set_blocking(fd, blocking, /)¶
Устанавливает режим блокировки для указанного файлового дескриптора. Устанавливает флаг
O_NONBLOCK, если блокировкаFalse, и сбрасывает флаг в противном случае.См. также
get_blocking()иsocket.socket.setblocking().Доступность: Unix.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
Новое в версии 3.5.
- os.splice(src, dst, count, offset_src=None, offset_dst=None)¶
Передаёт count байтов из файлового дескриптора src, начиная со смещения offset_src, в файловый дескриптор dst, начиная со смещения offset_dst. По крайней мере один из файловых дескрипторов должен ссылаться на канал. Если offset_src равен None, то src читается с текущей позиции; аналогично для offset_dst. Смещение, связанное с файловым дескриптором, который ссылается на канал, должно быть
None. Файлы, на которые указывают src и dst, должны находиться в одной файловой системе, иначе будет вызваноOSErrorсerrno, установленным вerrno.EXDEV.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в бинарном режиме.
При успешном завершении возвращается количество байт, переданных в канал или из канала. Возврат 0 означает конец ввода. Если src ссылается на канал, это означает, что данных для передачи нет, и блокироваться не имеет смысла, так как к концу записи канала не подключено ни одного записывающего процесса.
Доступность: Linux >= 2.6.17 с glibc >= 2.5
Новое в версии 3.10.
- os.readv(fd, buffers, /)¶
Читает из файлового дескриптора fd в несколько изменяемых объектов, подобных байтам buffers. Передаёт данные в каждый буфер до его заполнения, затем переходит к следующему буферу в последовательности для размещения оставшихся данных.
Возвращает общее количество фактически прочитанных байт, которое может быть меньше суммарной ёмкости всех объектов.
Операционная система может устанавливать ограничение (значение
sysconf()'SC_IOV_MAX') на количество буферов, которые можно использовать.Доступность: Unix.
Новое в версии 3.3.
- os.tcgetpgrp(fd, /)¶
Возвращает группу процессов, связанную с терминалом, заданным fd (открытый файловый дескриптор, возвращаемый
os.open()).Доступность: Unix, не WASI.
- os.tcsetpgrp(fd, pg, /)¶
Устанавливает группу процессов, связанную с терминалом, заданным fd (открытый файловый дескриптор, возвращаемый
os.open()), в pg.Доступность: Unix, не WASI.
- os.ttyname(fd, /)¶
Возвращает строку, которая идентифицирует терминальное устройство, связанное с файловым дескриптором fd. Если fd не связан с терминальным устройством, возбуждается исключение.
Доступность: Unix.
- os.write(fd, str, /)¶
Записывает байтовую строку из str в файловый дескриптор fd.
Возвращает количество байтов, фактически записанных.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращённому
os.open()илиpipe(). Чтобы записать «файловый объект», возвращённый встроенной функциейopen()илиpopen(), илиfdopen(), илиsys.stdout, илиsys.stderr, используйте его методwrite().Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).
- os.writev(fd, buffers, /)¶
Записывает содержимое buffers в файловый дескриптор fd. buffers должен быть последовательностью байтоподобных объектов. Буферы обрабатываются в порядке массива. Сначала полностью записывается содержимое первого буфера, затем второго и так далее.
Возвращает общее количество байтов, фактически записанных.
Операционная система может устанавливать ограничение (значение
sysconf()'SC_IOV_MAX') на количество буферов, которые можно использовать.Доступность: Unix.
Новое в версии 3.3.
Определение размера терминала¶Querying the size of a terminal
Новое в версии 3.3.
- os.get_terminal_size(fd=STDOUT_FILENO, /)¶
Возвращает размер окна терминала в виде
(columns, lines), кортежа типаterminal_size.Необязательный аргумент
fd(по умолчаниюSTDOUT_FILENO, или стандартный вывод) указывает, какой файловый дескриптор следует опросить.Если файловый дескриптор не подключён к терминалу, возбуждается
OSError.shutil.get_terminal_size()– это высокоуровневая функция, которую следует использовать обычно;os.get_terminal_size– это низкоуровневая реализация.Доступность: Unix, Windows.
Наследование файловых дескрипторов¶Inheritance of File Descriptors
Новое в версии 3.4.
Файловый дескриптор имеет флаг «наследуемости», который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python 3.4, файловые дескрипторы, создаваемые Python, по умолчанию ненаследуемые.
В UNIX ненаследуемые файловые дескрипторы закрываются в дочерних процессах при запуске новой программы; остальные дескрипторы наследуются.
В Windows ненаследуемые дескрипторы и файловые дескрипторы закрываются в дочерних
процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout
и stderr), которые всегда наследуются. При использовании функций spawn*
наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы.
При использовании модуля subprocess все файловые дескрипторы, кроме стандартных
потоков, закрываются, а наследуемые дескрипторы наследуются только в том случае, если
параметр close_fds имеет значение False.
На платформах WebAssembly wasm32-emscripten и wasm32-wasi файловый дескриптор изменить нельзя.
- os.get_inheritable(fd, /)¶
Получает флаг «наследуемости» указанного файлового дескриптора (логическое значение).
- os.set_inheritable(fd, inheritable, /)¶
Устанавливает флаг наследуемости для указанного файлового дескриптора.
- os.get_handle_inheritable(handle, /)¶
Возвращает флаг наследуемости для указанного дескриптора (булево значение).
Доступность: Windows.
- os.set_handle_inheritable(handle, inheritable, /)¶
Устанавливает флаг наследуемости для указанного дескриптора.
Доступность: Windows.
Файлы и каталоги¶Files and Directories
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:
Указание файлового дескриптора: Обычно аргумент path, передаваемый функциям из модуля
os, должен быть строкой, задающей путь к файлу. Однако некоторые функции теперь в качестве альтернативы принимают открытый файловый дескриптор для своего аргумента path. В этом случае функция будет работать с файлом, на который указывает дескриптор. (В системах POSIX Python вызовет вариант функции с префиксомf(например, вызоветfchdirвместоchdir).)Проверить, может ли path быть указан как файловый дескриптор для конкретной функции на вашей платформе, можно с помощью
os.supports_fd. Если эта функциональность недоступна, её использование вызовет исключениеNotImplementedError.Если функция также поддерживает аргументы dir_fd или follow_symlinks, то указывать любой из них при передаче path в качестве файлового дескриптора будет ошибкой.
Пути относительно дескрипторов каталогов: Если dir_fd не равен
None, то он должен быть файловым дескриптором, ссылающимся на каталог, а путь, над которым выполняется операция, должен быть относительным; в этом случае путь будет считаться относительно этого каталога. Если путь является абсолютным, dir_fd игнорируется. (В системах POSIX Python вызовет вариант функции с суффиксомatи, возможно, с префиксомf(например, вызоветfaccessatвместоaccess).Проверить, поддерживается ли dir_fd для конкретной функции на вашей платформе, можно с помощью
os.supports_dir_fd. Если он недоступен, его использование вызовет исключениеNotImplementedError.
Неследование символическим ссылкам: Если follow_symlinks равен
False, и последний элемент пути, над которым выполняется операция, является символической ссылкой, то функция будет работать с самой символической ссылкой, а не с файлом, на который она указывает. (В системах POSIX Python вызовет вариант функцииl...).Проверить, поддерживается ли follow_symlinks для конкретной функции на вашей платформе, можно с помощью
os.supports_follow_symlinks. Если он недоступен, его использование вызовет исключениеNotImplementedError.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
Использует реальный UID/GID для проверки доступа к path. Обратите внимание, что большинство операций используют эффективные UID/GID, поэтому эта функция может использоваться в окружении suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к path. Параметр mode должен быть равен
F_OKдля проверки существования path, или может быть логическим ИЛИ одного или нескольких значенийR_OK,W_OKиX_OKдля проверки прав доступа. ВозвращаетTrue, если доступ разрешён,False– если нет. Подробнее см. на странице man Unix access(2).Эта функция поддерживает указание путей относительно дескрипторов каталогов и отказ от следования по символьным ссылкам.
Если effective_ids равно
True,access()будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных UID/GID. Параметр effective_ids может не поддерживаться на вашей платформе; проверить, доступен ли он, можно с помощьюos.supports_effective_ids. Если он недоступен, его использование вызовет исключениеNotImplementedError.Примечание
Использование
access()для проверки, авторизован ли пользователь, например, на открытие файла, перед фактическим открытием с помощьюopen(), создаёт брешь в безопасности, поскольку пользователь может воспользоваться коротким временным промежутком между проверкой и открытием файла для его изменения. Предпочтительнее использовать подход EAFP. Например:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
лучше написать так:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
Примечание
Операции ввода-вывода могут завершиться ошибкой, даже если
access()указывает, что они должны выполниться успешно, особенно для операций в сетевых файловых системах, которые могут иметь семантику прав доступа, выходящую за рамки обычной POSIX-модели битов разрешений.Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.F_OK¶
- os.R_OK¶
- os.W_OK¶
- os.X_OK¶
Значения, которые передаются в параметре mode функции
access()для проверки существования, читаемости, возможности записи и исполнения path, соответственно.
- os.chdir(path)¶
Изменяет текущий рабочий каталог на path.
Эта функция поддерживает указание файлового дескриптора. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.
Эта функция может вызывать
OSErrorи подклассы, такие какFileNotFoundError,PermissionError, иNotADirectoryError.Вызывает событие аудита
os.chdirс аргументомpath.Изменено в версии 3.3: Добавлена возможность указывать path как файловый дескриптор на некоторых платформах.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.chflags(path, flags, *, follow_symlinks=True)¶
Устанавливает флаги path в числовое значение flags. flags может принимать комбинацию (побитовое ИЛИ) следующих значений (определённых в модуле
stat):Эта функция поддерживает отказ от следования симлинкам.
Возбуждает событие аудита
os.chflagsс аргументамиpath,flags.Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.3: Добавлен параметр follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
Изменяет режим path на числовое значение mode. mode может принимать одно из следующих значений (определённых в модуле
stat) или их побитовые комбинации:Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Примечание
Хотя Windows поддерживает
chmod(), с его помощью можно установить только флаг «только для чтения» файла (через константыstat.S_IWRITEиstat.S_IREADили соответствующее целочисленное значение). Все остальные биты игнорируются.Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
Вызывает событие аудита
os.chmodс аргументамиpath,mode,dir_fd.Новое в версии 3.3: добавлена возможность указывать path как открытый файловый дескриптор, а также аргументы dir_fd и follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶
Изменяет идентификаторы владельца и группы path на числовые значения uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1.
Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
См.
shutil.chown()– функцию более высокого уровня, которая принимает имена в дополнение к числовым идентификаторам.Возбуждает событие аудита
os.chownс аргументамиpath,uid,gid,dir_fd.Доступность: Unix.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
Новое в версии 3.3: добавлена возможность указывать path как открытый файловый дескриптор, а также аргументы dir_fd и follow_symlinks.
Изменено в версии 3.6: Поддерживает path-подобный объект.
- os.chroot(path)¶
Изменяет корневую директорию текущего процесса на path.
Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.fchdir(fd)¶
Изменяет текущую рабочую директорию на директорию, представленную файловым дескриптором fd. Дескриптор должен ссылаться на открытую директорию, а не на открытый файл. Начиная с Python 3.3, это эквивалентно
os.chdir(fd).Вызывает событие аудита
os.chdirс аргументомpath.Доступность: Unix.
- os.getcwd()¶
Возвращает строку, представляющую текущую рабочую директорию.
- os.getcwdb()¶
Возвращает байтовую строку, представляющую текущую рабочую директорию.
Изменено в версии 3.8: Теперь функция использует кодировку UTF-8 в Windows вместо кодовой страницы ANSI; см. PEP 529 для обоснования. Функция больше не считается устаревшей в Windows.
- os.lchflags(path, flags)¶
Устанавливает флаги path в числовое значение flags, как
chflags(), но не следует символическим ссылкам. Начиная с Python 3.3, это эквивалентноos.chflags(path, flags, follow_symlinks=False).Возбуждает событие аудита
os.chflagsс аргументамиpath,flags.Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.lchmod(path, mode)¶
Изменяет режим path на числовой mode. Если path является символической ссылкой, это влияет на саму ссылку, а не на цель. См. документацию
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(path, mode, follow_symlinks=False).lchmod()не является частью POSIX, но реализации Unix могут предоставлять её, если поддерживается изменение режима символических ссылок.Вызывает событие аудита
os.chmodс аргументамиpath,mode,dir_fd.Доступность: Unix, не Linux, FreeBSD >= 1.3, NetBSD >= 1.3, не OpenBSD
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.lchown(path, uid, gid)¶
Изменяет идентификаторы владельца и группы для path на числовые uid и gid. Эта функция не переходит по символическим ссылкам. Начиная с Python 3.3, это эквивалентно
os.chown(path, uid, gid, follow_symlinks=False).Возбуждает событие аудита
os.chownс аргументамиpath,uid,gid,dir_fd.Доступность: Unix.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶
Создаёт жёсткую ссылку, указывающую на src, с именем dst.
Эта функция поддерживает указание src_dir_fd и/или dst_dir_fd для задания путей относительно дескрипторов каталогов, а также отказ от следования символическим ссылкам.
Возбуждает событие аудита
os.linkс аргументамиsrc,dst,src_dir_fd,dst_dir_fd.Доступность: Unix, Windows, не Emscripten.
Изменено в версии 3.2: Добавлена поддержка Windows.
Изменено в версии 3.3: Добавлены параметры src_dir_fd, dst_dir_fd и follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути для src и dst.
- os.listdir(path='.')¶
Возвращает список, содержащий имена записей в каталоге, заданном path. Список находится в произвольном порядке и не включает специальные записи
'.'и'..', даже если они присутствуют в каталоге. Если файл удаляется из каталога или добавляется в него во время вызова этой функции, то будет ли включено имя для этого файла, не определено.path может быть объектом, подобным пути. Если path имеет тип
bytes(напрямую или косвенно через интерфейсPathLike), возвращаемые имена файлов также будут иметь типbytes; во всех остальных случаях они будут иметь типstr.Эта функция также может поддерживать указание файлового дескриптора; файловый дескриптор должен ссылаться на каталог.
Вызывает событие аудита
os.listdirс аргументомpath.Примечание
Для кодирования имён файлов из
strвbytesиспользуйтеfsencode().См. также
Функция
scandir()возвращает записи каталога вместе с информацией об атрибутах файлов, что обеспечивает лучшую производительность для многих типичных сценариев использования.Изменено в версии 3.2: Параметр path стал необязательным.
Новое в версии 3.3: добавлена возможность указывать path как открытый файловый дескриптор.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.lstat(path, *, dir_fd=None)¶
Выполняет эквивалент системного вызова
lstat()для указанного пути. Похоже наstat(), но не переходит по символическим ссылкам. Возвращает объектstat_result.На платформах, не поддерживающих символические ссылки, это псевдоним для
stat().Начиная с Python 3.3, это эквивалентно
os.stat(path, dir_fd=dir_fd, follow_symlinks=False).Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
См. также
Функция
stat().Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.8: В Windows теперь открывает точки повторной обработки (reparse points), представляющие другой путь (суррогаты имени), включая символические ссылки и точки соединения каталогов. Другие типы точек повторной обработки разрешаются операционной системой как для
stat().
- os.mkdir(path, mode=0o777, *, dir_fd=None)¶
Создаёт каталог с именем path и числовым режимом mode.
Если каталог уже существует, возникает
FileExistsError. Если родительский каталог в пути не существует, возникаетFileNotFoundError.На некоторых системах mode игнорируется. Если он используется, сначала применяется маска текущего umask. Если установлены биты, отличные от последних 9 (то есть последних 3 цифр восьмеричного представления mode), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать
chmod().В Windows значение mode, равное
0o700, обрабатывается особым образом: применяется управление доступом к новому каталогу так, что доступ имеют только текущий пользователь и администраторы. Другие значения mode игнорируются.Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Также можно создавать временные каталоги; см. функцию
tempfile.mkdtemp()модуляtempfile.Вызывает событие аудита
os.mkdirс аргументамиpath,mode,dir_fd.Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.11.10: в Windows теперь обрабатывается mode со значением
0o700.
- os.makedirs(name, mode=0o777, exist_ok=False)¶
Функция рекурсивного создания каталогов. Похожа на
mkdir(), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога.Параметр mode передаётся в
mkdir()для создания конечного каталога; см. описание mkdir(), чтобы узнать, как он интерпретируется. Чтобы установить биты разрешений для любых вновь созданных родительских каталогов, можно установить umask перед вызовомmakedirs(). Биты разрешений существующих родительских каталогов не изменяются.Если exist_ok равно
False(по умолчанию), возникаетFileExistsError, если целевой каталог уже существует.Примечание
makedirs()запутается, если элементы пути для создания включаютpardir(например, «..» в UNIX-системах).Эта функция корректно обрабатывает UNC-пути.
Вызывает событие аудита
os.mkdirс аргументамиpath,mode,dir_fd.Изменено в версии 3.2: Добавлен параметр exist_ok.
Изменено в версии 3.4.1: До Python 3.4.1, если exist_ok было
Trueи каталог существовал,makedirs()всё равно вызывал ошибку, если mode не совпадал с режимом существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. См. bpo-21082.Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.7: Аргумент mode больше не влияет на биты разрешений файлов вновь созданных промежуточных каталогов.
- os.mkfifo(path, mode=0o666, *, dir_fd=None)¶
Создаёт FIFO (именованный канал) с именем path и числовым режимом mode. Значение текущего umask сначала вычитается из режима.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока их не удалят (например, с помощью
os.unlink()). Как правило, FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, чтоmkfifo()не открывает FIFO – он только создаёт точку встречи.Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.mknod(path, mode=0o600, device=0, *, dir_fd=None)¶
Создаёт узел файловой системы (файл, специальный файл устройства или именованный канал) с именем path. mode задаёт как права доступа, так и тип создаваемого узла; значение получается комбинированием (побитовым ИЛИ) с одной из констант
stat.S_IFREG,stat.S_IFCHR,stat.S_IFBLKиstat.S_IFIFO(эти константы доступны вstat). Дляstat.S_IFCHRиstat.S_IFBLKпараметр device определяет вновь создаваемый специальный файл устройства (вероятно, с помощьюos.makedev()); в противном случае он игнорируется.Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Доступность: Unix, не Emscripten, не WASI.
Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.major(device, /)¶
Извлекает старший номер устройства из сырого номера устройства (обычно поля
st_devилиst_rdevизstat).
- os.minor(device, /)¶
Извлекает младший номер устройства из сырого номера устройства (обычно поля
st_devилиst_rdevизstat).
- os.makedev(major, minor, /)¶
Составляет сырой номер устройства из старшего и младшего номеров устройства.
- os.pathconf(path, name)¶
Возвращает информацию о системной конфигурации для указанного файла. name задаёт запрашиваемое значение конфигурации; это может быть строка, содержащая имя определённого системного значения. Эти имена заданы в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). На некоторых платформах могут быть также определены дополнительные имена. Имена, известные операционной системе, приведены в словаре
pathconf_names. Для переменных конфигурации, не включённых в это соответствие, допускается также передача целого числа в качестве name.Если name – строка и не известна, возбуждается исключение
ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно присутствует вpathconf_names, возбуждается исключениеOSErrorсerrno.EINVALв качестве кода ошибки.Эта функция может поддерживать указание файлового дескриптора.
Доступность: Unix.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.pathconf_names¶
Словарь, отображающий имена, принимаемые функциями
pathconf()иfpathconf(), в целочисленные значения, определённые для этих имён хост-операционной системой. Его можно использовать для определения набора имён, известных системе.Доступность: Unix.
- os.readlink(path, *, dir_fd=None)¶
Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным путём; если он относительный, его можно преобразовать в абсолютный с помощью
os.path.join(os.path.dirname(path), result).Если path – строковый объект (напрямую или косвенно через интерфейс
PathLike), результат также будет строковым объектом, и вызов может возбудить UnicodeDecodeError. Если path – объект bytes (напрямую или косвенно), результатом будет объект bytes.Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
При попытке разрешить путь, который может содержать ссылки, используйте
realpath()для корректной обработки рекурсии и различий платформ.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает path-подобный объект на Unix.
Изменено в версии 3.8: Принимает path-подобный объект и объект bytes на Windows.
Добавлена поддержка точек соединения каталогов, и изменено поведение: теперь возвращается путь подстановки (который обычно включает префикс
\\?\) вместо необязательного поля «отображаемое имя», которое возвращалось ранее.
- os.remove(path, *, dir_fd=None)¶
Удаляет файл path. Если path является каталогом, возбуждается
OSError. Для удаления каталогов используйтеrmdir(). Если файл не существует, возбуждаетсяFileNotFoundError.Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
В Windows попытка удалить файл, который используется, приводит к возбуждению исключения; в Unix запись в каталоге удаляется, но память, выделенная файлу, не освобождается, пока исходный файл не перестанет использоваться.
Эта функция семантически идентична
unlink().Возбуждает событие аудита
os.removeс аргументамиpath,dir_fd.Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.removedirs(name)¶
Рекурсивно удаляет каталоги. Работает как
rmdir(), за исключением того, что если конечный каталог успешно удалён,removedirs()пытается последовательно удалить все родительские каталоги, указанные в path, пока не возникнет ошибка (которая игнорируется, поскольку обычно это означает, что родительский каталог не пуст). Например,os.removedirs('foo/bar/baz')сначала удалит каталог'foo/bar/baz', а затем удалит'foo/bar'и'foo', если они пусты. ВозбуждаетOSError, если конечный каталог не удалось удалить.Возбуждает событие аудита
os.removeс аргументамиpath,dir_fd.Изменено в версии 3.6: Принимает объект, подобный пути.
- os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Переименовывает файл или каталог src в dst. Если dst существует, операция завершится неудачей с подклассом
OSErrorв ряде случаев:В Windows, если dst существует, всегда возбуждается
FileExistsError. Операция может завершиться неудачей, если src и dst находятся в разных файловых системах. Используйтеshutil.move()для поддержки перемещения в другую файловую систему.В Unix, если src – файл, а dst – каталог или наоборот, будет возбуждено
IsADirectoryErrorилиNotADirectoryErrorсоответственно. Если оба являются каталогами и dst пуст, dst будет заменён без сообщения. Если dst – непустой каталог, возбуждаетсяOSError. Если оба являются файлами, dst будет заменён без сообщения, если у пользователя есть разрешение. На некоторых разновидностях Unix операция может завершиться неудачей, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для передачи путей, относительных к дескрипторам каталогов.
Если требуется кроссплатформенная перезапись целевого объекта, используйте
replace().Возбуждает событие аудита
os.renameс аргументамиsrc,dst,src_dir_fd,dst_dir_fd.Изменено в версии 3.3: Добавлены параметры src_dir_fd и dst_dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути для src и dst.
- os.renames(old, new)¶
Функция рекурсивного переименования каталогов или файлов. Работает как
rename(), за исключением того, что сначала предпринимается попытка создать все промежуточные каталоги, необходимые для формирования нового пути. После переименования каталоги, соответствующие самым правым сегментам пути старого имени, будут удалены с помощьюremovedirs().Примечание
Эта функция может завершиться неудачей, если новая структура каталогов уже создана, но недостаточно прав для удаления конечного каталога или файла.
Возбуждает событие аудита
os.renameс аргументамиsrc,dst,src_dir_fd,dst_dir_fd.Изменено в версии 3.6: Теперь принимает объект, подобный пути для old и new.
- os.replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶
Переименовывает файл или каталог src в dst. Если dst – непустой каталог, будет возбуждено
OSError. Если dst существует и является файлом, он будет заменён без сообщения, если у пользователя есть разрешение. Операция может завершиться неудачей, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для передачи путей, относительных к дескрипторам каталогов.
Возбуждает событие аудита
os.renameс аргументамиsrc,dst,src_dir_fd,dst_dir_fd.Новое в версии 3.3.
Изменено в версии 3.6: Принимает объект, подобный пути для src и dst.
- os.rmdir(path, *, dir_fd=None)¶
Удаляет каталог path. Если каталог не существует или не пуст, возбуждается
FileNotFoundErrorилиOSErrorсоответственно. Для удаления целых деревьев каталогов можно использоватьshutil.rmtree().Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Возбуждает событие аудита
os.rmdirс аргументамиpath,dir_fd.Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.scandir(path='.')¶
Возвращает итератор объектов
os.DirEntry, соответствующих записям в каталоге, заданном path. Записи возвращаются в произвольном порядке, а специальные записи'.'и'..'не включаются. Если файл был удалён или добавлен в каталог после создания итератора, не определено, будет ли включена запись для этого файла.Использование
scandir()вместоlistdir()может значительно повысить производительность кода, которому также требуется информация о типе файла или его атрибутах, поскольку объектыos.DirEntryпредоставляют эту информацию, если операционная система предоставляет её при сканировании каталога. Все методыos.DirEntryмогут выполнять системный вызов, ноis_dir()иis_file()обычно требуют системного вызова только для символических ссылок;os.DirEntry.stat()всегда требует системного вызова в Unix, но в Windows – только для символических ссылок.path может быть объектом, подобным пути. Если path имеет тип
bytes(напрямую или через интерфейсPathLike), то типом атрибутовnameиpathкаждогоos.DirEntryбудетbytes; во всех остальных случаях они будут иметь типstr.Эта функция также может поддерживать указание файлового дескриптора; файловый дескриптор должен ссылаться на каталог.
Вызывает событие аудита
os.scandirс аргументомpath.Итератор
scandir()поддерживает протокол менеджера контекста и имеет следующий метод:- scandir.close()¶
Закрывает итератор и освобождает занятые ресурсы.
Этот метод вызывается автоматически, когда итератор исчерпан или собран сборщиком мусора, или при возникновении ошибки во время итерации. Однако рекомендуется вызывать его явно или использовать инструкцию
with.Новое в версии 3.6.
Следующий пример демонстрирует простое использование
scandir()для отображения всех файлов (кроме каталогов) в заданном пути, имена которых не начинаются с'.'. Вызовentry.is_file()обычно не требует дополнительного системного вызова:with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
Примечание
В системах на базе Unix
scandir()использует системные функции opendir() и readdir(). В Windows используются функции Win32 FindFirstFileW и FindNextFileW.Новое в версии 3.5.
Изменено в версии 3.6: Добавлена поддержка протокола менеджера контекста и метода
close(). Если итераторscandir()не был полностью израсходован или явно закрыт, в его деструкторе будет выданоResourceWarning.Функция принимает объект, подобный пути.
Изменено в версии 3.7: Добавлена поддержка файловых дескрипторов в Unix.
- class os.DirEntry¶
Объект, возвращаемый
scandir()для предоставления пути к файлу и других атрибутов записи каталога.scandir()предоставляет как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызовstat()илиlstat(), объектos.DirEntryкэширует результат.Экземпляры
os.DirEntryне предназначены для хранения в долгоживущих структурах данных; если известно, что метаданные файла изменились или прошло много времени с момента вызоваscandir(), вызовитеos.stat(entry.path), чтобы получить актуальную информацию.Поскольку методы
os.DirEntryмогут выполнять системные вызовы, они также могут возбуждатьOSError. Если требуется очень точный контроль над ошибками, можно перехватыватьOSErrorпри вызове одного из методовos.DirEntryи обрабатывать соответствующим образом.Чтобы быть непосредственно используемым в качестве объекта, подобного пути,
os.DirEntryреализует интерфейсPathLike.Атрибуты и методы экземпляра
os.DirEntry:- name¶
Базовое имя файла записи, относительно
scandir()аргумента path.Атрибут
nameбудет иметь значениеbytes, еслиscandir()аргумент path имеет типbytes, иstrв противном случае. Используйтеfsdecode()для декодирования байтовых имен файлов.
- path¶
Полное имя пути записи: эквивалентно
os.path.join(scandir_path, entry.name), где scandir_path – этоscandir()path аргумент. Путь является абсолютным, только если аргументscandir()path был абсолютным. Если аргументscandir()path был файловым дескриптором, тоpathатрибут совпадает с атрибутомname.Атрибут
pathбудет иметь значениеbytes, еслиscandir()аргумент path имеет типbytes, иstrв противном случае. Используйтеfsdecode()для декодирования байтовых имен файлов.
- inode()¶
Возвращает номер инода записи.
Результат кэшируется в объекте
os.DirEntry. Используйтеos.stat(entry.path, follow_symlinks=False).st_inoдля получения актуальной информации.При первом (некэшированном) вызове системный вызов требуется в Windows, но не в Unix.
- is_dir(*, follow_symlinks=True)¶
Возвращает
True, если эта запись является каталогом или символической ссылкой, указывающей на каталог; возвращаетFalse, если запись является или указывает на любой другой тип файла, или если она больше не существует.Если follow_symlinks имеет значение
False, возвращаетTrue, только если эта запись является каталогом (без перехода по символическим ссылкам); возвращаетFalse, если запись является файлом любого другого типа или если она больше не существует.Результат кэшируется в объекте
os.DirEntry, с отдельным кэшем для follow_symlinksTrueиFalse. Вызовитеos.stat()вместе сstat.S_ISDIR()для получения актуальной информации.При первом (некэшированном) вызове системный вызов не требуется в большинстве случаев. В частности, для несимволических ссылок ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN. Если запись является символической ссылкой, системный вызов потребуется для перехода по ссылке, если только follow_symlinks не равенFalse.Этот метод может вызвать
OSError, напримерPermissionError, ноFileNotFoundErrorперехватывается и не выбрасывается.
- is_file(*, follow_symlinks=True)¶
Возвращает
True, если эта запись является файлом или символической ссылкой, указывающей на файл; возвращаетFalse, если запись является или указывает на каталог или другую запись, не являющуюся файлом, или если она больше не существует.Если follow_symlinks имеет значение
False, возвращаетTrue, только если эта запись является файлом (без перехода по символическим ссылкам); возвращаетFalse, если запись является каталогом или другой записью, не являющейся файлом, или если она больше не существует.Результат кэшируется в объекте
os.DirEntry. Кэширование, выполненные системные вызовы и возникшие исключения обрабатываются в соответствии сis_dir().
- is_symlink()¶
Возвращает
True, если эта запись является символической ссылкой (даже битой); возвращаетFalse, если запись указывает на каталог или любой файл, или если она больше не существует.Результат кэшируется в объекте
os.DirEntry. Вызовитеos.path.islink(), чтобы получить актуальную информацию.При первом некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN.Этот метод может вызвать
OSError, напримерPermissionError, ноFileNotFoundErrorперехватывается и не выбрасывается.
- stat(*, follow_symlinks=True)¶
Возвращает объект
stat_resultдля этой записи. По умолчанию этот метод следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргументfollow_symlinks=False.В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова, только если follow_symlinks равен
True, а запись является точкой повторной обработки (например, символической ссылкой или junction-точкой каталога).В Windows атрибуты
st_ino,st_devиst_nlinkобъектаstat_resultвсегда равны нулю. Вызовитеos.stat(), чтобы получить эти атрибуты.Результат кэшируется в объекте
os.DirEntry, с отдельным кэшем для follow_symlinksTrueиFalse. Вызовитеos.stat(), чтобы получить актуальную информацию.
Следует отметить, что между некоторыми атрибутами и методами
os.DirEntryиpathlib.Pathсуществует хорошее соответствие. В частности, атрибутnameимеет тот же смысл, что и методыis_dir(),is_file(),is_symlink()иstat().Новое в версии 3.5.
- os.stat(path, *, dir_fd=None, follow_symlinks=True)¶
Получить статус файла или файлового дескриптора. Выполняет эквивалент системного вызова
stat()для заданного пути. path может быть задан как строка или байты – напрямую или косвенно через интерфейсPathLike– или как открытый файловый дескриптор. Возвращает объектstat_result.Эта функция обычно следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент
follow_symlinks=Falseили используйтеlstat().Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
В Windows передача
follow_symlinks=Falseотключает следование всем surrogate-точкам повторной обработки, включая символические ссылки и junction-точки каталогов. Другие типы точек повторной обработки, не похожие на ссылки или которые операционная система не может обработать, будут открыты напрямую. При следовании по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая предотвратила полный обход. Чтобы получить результаты stat для конечного пути в этом случае, используйте функциюos.path.realpath()для разрешения имени пути насколько это возможно и вызовитеlstat()для результата. Это не относится к битым символическим ссылкам или junction-точкам, которые вызывают обычные исключения.Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Изменено в версии 3.3: Добавлены параметры dir_fd и follow_symlinks, позволяющие указать файловый дескриптор вместо пути.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.8: В Windows теперь обрабатываются все точки повторной обработки, которые может разрешить операционная система, а передача
follow_symlinks=Falseотключает следование всем surrogate-точкам повторной обработки. Если операционная система достигает точки повторной обработки, которую не может обработать, stat теперь возвращает информацию для исходного пути, как если бы был указанfollow_symlinks=False, вместо вызова ошибки.
- class os.stat_result¶
Объект, атрибуты которого примерно соответствуют членам структуры
stat. Используется для результатаos.stat(),os.fstat()иos.lstat().Атрибуты:
- st_mode¶
Режим файла: тип файла и биты режима (права доступа).
- st_ino¶
Зависит от платформы, но если не равно нулю, однозначно идентифицирует файл для заданного значения
st_dev. Обычно:номер inode в Unix,
индекс файла на Windows
- st_dev¶
Идентификатор устройства, на котором находится этот файл.
- st_nlink¶
Количество жёстких ссылок.
- st_uid¶
Идентификатор пользователя-владельца файла.
- st_gid¶
Идентификатор группы владельца файла.
- st_size¶
Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.
Временные метки:
- st_atime¶
Время последнего доступа, выраженное в секундах.
- st_mtime¶
Время последнего изменения содержимого, выраженное в секундах.
- st_ctime¶
Зависит от платформы:
время последнего изменения метаданных в Unix,
время создания в Windows, выраженное в секундах.
- st_atime_ns¶
Время последнего доступа, выраженное в наносекундах в виде целого числа.
Новое в версии 3.3.
- st_mtime_ns¶
Время последнего изменения содержимого, выраженное в наносекундах в виде целого числа.
Новое в версии 3.3.
- st_ctime_ns¶
Зависит от платформы:
время последнего изменения метаданных в Unix,
время создания в Windows, выраженное в наносекундах в виде целого числа.
Новое в версии 3.3.
Примечание
Точный смысл и разрешение атрибутов
st_atime,st_mtimeиst_ctimeзависят от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, атрибутst_mtimeимеет разрешение 2 секунды, аst_atime– всего 1 день. Подробности см. в документации операционной системы.Аналогично, хотя
st_atime_ns,st_mtime_ns, иst_ctime_nsвсегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, которые обеспечивают наносекундную точность, объект с плавающей запятой, используемый для храненияst_atime,st_mtimeиst_ctime, не может сохранить всю эту точность и поэтому будет немного неточным. Если требуются точные временные метки, всегда следует использоватьst_atime_ns,st_mtime_nsиst_ctime_ns.В некоторых системах Unix (например, Linux) могут быть также доступны следующие атрибуты:
- st_blocks¶
Количество 512-байтовых блоков, выделенных файлу. Может быть меньше
st_size/512, если в файле есть дырки (holes).
- st_blksize¶
«Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).
- st_rdev¶
Тип устройства, если inode является устройством.
- st_flags¶
Определённые пользователем флаги для файла.
В других системах Unix (например, FreeBSD) могут быть доступны следующие атрибуты (но могут заполняться, только если root попытается их использовать):
- st_gen¶
Номер поколения файла.
- st_birthtime¶
Время создания файла.
В Solaris и производных системах также могут быть доступны следующие атрибуты:
- st_fstype¶
Строка, уникально идентифицирующая тип файловой системы, содержащей файл.
В системах macOS также могут быть доступны следующие атрибуты:
- st_rsize¶
Реальный размер файла.
- st_creator¶
Создатель файла.
- st_type¶
Тип файла.
В системах Windows также доступны следующие атрибуты:
- st_file_attributes¶
Атрибуты файла Windows: член
dwFileAttributesструктурыBY_HANDLE_FILE_INFORMATION, возвращаемой функциейGetFileInformationByHandle(). Обратитесь к константамFILE_ATTRIBUTE_* <stat.FILE_ATTRIBUTE_ARCHIVE>из модуляstat.Новое в версии 3.5.
- st_reparse_tag¶
Когда у
st_file_attributesустановленFILE_ATTRIBUTE_REPARSE_POINT, это поле содержит тег, идентифицирующий тип точки повторного анализа (reparse point). Обратитесь к константамIO_REPARSE_TAG_*из модуляstat.
Стандартный модуль
statопределяет функции и константы, полезные для извлечения информации из структурыstat. (В Windows некоторые поля заполняются фиктивными значениями.)Для обратной совместимости экземпляр
stat_resultтакже доступен как кортеж из как минимум 10 целых чисел, представляющих наиболее важные (и переносимые) члены структурыstat, в порядкеst_mode,st_ino,st_dev,st_nlink,st_uid,st_gid,st_size,st_atime,st_mtime,st_ctime. Некоторые реализации могут добавлять больше элементов в конец. Для совместимости со старыми версиями Python обращение кstat_resultкак к кортежу всегда возвращает целые числа.Изменено в версии 3.5: Windows теперь возвращает индекс файла как
st_ino, если он доступен.Изменено в версии 3.7: Добавлен элемент
st_fstypeдля Solaris и его производных.Изменено в версии 3.8: Добавлен элемент
st_reparse_tagв Windows.Изменено в версии 3.8: В Windows элемент
st_modeтеперь идентифицирует специальные файлы какS_IFCHR,S_IFIFOилиS_IFBLKпо ситуации.
- os.statvfs(path)¶
Выполняет системный вызов
statvfs()для указанного пути. Возвращаемое значение – это объект, чьи атрибуты описывают файловую систему по указанному пути и соответствуют членам структурыstatvfs, а именно:f_bsize,f_frsize,f_blocks,f_bfree,f_bavail,f_files,f_ffree,f_favail,f_flag,f_namemax,f_fsid.Две константы уровня модуля определены для битовых флагов атрибута
f_flag: если установленST_RDONLY, файловая система смонтирована только для чтения, а если установленST_NOSUID, семантика битов setuid/setgid отключена или не поддерживается.Дополнительные константы уровня модуля определены для систем на базе 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).Эта функция может поддерживать указание файлового дескриптора.
Доступность: Unix.
Изменено в версии 3.2: Были добавлены константы
ST_RDONLYиST_NOSUID.Изменено в версии 3.3: Добавлена поддержка указания path в качестве открытого файлового дескриптора.
Изменено в версии 3.4: Были добавлены константы
ST_NODEV,ST_NOEXEC,ST_SYNCHRONOUS,ST_MANDLOCK,ST_WRITE,ST_APPEND,ST_IMMUTABLE,ST_NOATIME,ST_NODIRATIMEиST_RELATIME.Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.7: Добавлен атрибут
f_fsid.
- os.supports_dir_fd¶
Объект
set, указывающий, какие функции в модулеosпринимают открытый файловый дескриптор для своего параметра dir_fd. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации параметра dir_fd, доступна не на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать dir_fd, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (УказаниеNoneдля dir_fd всегда поддерживается на всех платформах.)Чтобы проверить, принимает ли конкретная функция открытый файловый дескриптор для своего параметра dir_fd, используйте оператор
inнаsupports_dir_fd. Например, это выражение вычисляется вTrue, еслиos.stat()принимает открытые файловые дескрипторы для dir_fd на локальной платформе:os.stat in os.supports_dir_fd
В настоящее время параметры dir_fd работают только на платформах Unix; ни один из них не работает на Windows.
Новое в версии 3.3.
- os.supports_effective_ids¶
Объект
set, указывающий, разрешает лиos.access()указыватьTrueдля своего параметра effective_ids на локальной платформе. (УказаниеFalseдля effective_ids всегда поддерживается на всех платформах.) Если локальная платформа это поддерживает, коллекция будет содержатьos.access(); в противном случае она будет пуста.Это выражение вычисляется в
True, еслиos.access()поддерживаетeffective_ids=Trueна локальной платформе:os.access in os.supports_effective_ids
В настоящее время effective_ids поддерживается только на платформах Unix; он не работает на Windows.
Новое в версии 3.3.
- os.supports_fd¶
Объект
set, указывающий, какие функции в модулеosразрешают указывать свой параметр path как открытый файловый дескриптор на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для принятия открытых файловых дескрипторов в качестве аргументов path, доступна не на всех платформах, поддерживаемых Python.Чтобы определить, разрешает ли конкретная функция указывать открытый файловый дескриптор для своего параметра path, используйте оператор
inнаsupports_fd. Например, это выражение вычисляется вTrue, еслиos.chdir()принимает открытые файловые дескрипторы для path на локальной платформе:os.chdir in os.supports_fd
Новое в версии 3.3.
- os.supports_follow_symlinks¶
Объект
set, указывающий, какие функции в модулеosпринимаютFalseдля своего параметра follow_symlinks на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации follow_symlinks, недоступна на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать follow_symlinks, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (УказаниеTrueдля follow_symlinks всегда поддерживается на всех платформах.)Чтобы проверить, принимает ли конкретная функция
Falseдля своего параметра follow_symlinks, используйте операторinнаsupports_follow_symlinks. Например, это выражение вычисляется вTrue, если вы можете указатьfollow_symlinks=Falseпри вызовеos.stat()на локальной платформе:os.stat in os.supports_follow_symlinks
Новое в версии 3.3.
- os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶
Создает символическую ссылку, указывающую на src с именем dst.
В Windows символическая ссылка представляет собой либо файл, либо каталог и не изменяется динамически под цель. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если target_is_directory равен
True, или как файловая ссылка (по умолчанию) в противном случае. На платформах, отличных от Windows, параметр target_is_directory игнорируется.Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Примечание
В новых версиях Windows 10 непривилегированные учетные записи могут создавать символические ссылки, если включен режим разработчика. Если режим разработчика недоступен или не включен, требуется привилегия SeCreateSymbolicLinkPrivilege, или процесс должен быть запущен от имени администратора.
OSErrorвозникает, когда функция вызывается непривилегированным пользователем.Вызывает событие аудита
os.symlinkс аргументамиsrc,dst,dir_fd.Доступность: Unix, Windows.
Функция ограничена на Emscripten и WASI; подробнее см. платформы WebAssembly.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd и теперь разрешено target_is_directory на платформах, отличных от Windows.
Изменено в версии 3.6: Принимает объект, подобный пути для src и dst.
Изменено в версии 3.8: Добавлена поддержка непривилегированных символических ссылок в Windows с режимом разработчика.
- os.sync()¶
Принудительная запись всех данных на диск.
Доступность: Unix.
Новое в версии 3.3.
- os.truncate(path, length)¶
Усекает файл, соответствующий path, так, чтобы его размер не превышал length байт.
Эта функция может поддерживать указание файлового дескриптора.
Возбуждает событие аудита
os.truncateс аргументамиpath,length.Доступность: Unix, Windows.
Новое в версии 3.3.
Изменено в версии 3.5: Добавлена поддержка Windows
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.unlink(path, *, dir_fd=None)¶
Удаляет файл path. Эта функция семантически идентична
remove(); имяunlink– это её традиционное имя в Unix. Подробнее см. документациюremove().Возбуждает событие аудита
os.removeс аргументамиpath,dir_fd.Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶
Устанавливает время доступа и изменения файла, указанного в path.
utime()принимает два необязательных параметра: times и ns. Они задают время, устанавливаемое для path, и используются следующим образом:Если указан ns, то это должен быть кортеж из двух элементов вида
(atime_ns, mtime_ns), где каждый элемент – целое число, выражающее наносекунды.Если times не равен
None, то это должен быть кортеж из двух элементов вида(atime, mtime), где каждый элемент – int или float, выражающий секунды.Если times равен
None, а ns не указан, то это эквивалентно указаниюns=(atime_ns, mtime_ns), где оба времени равны текущему времени.
Указывать кортежи одновременно для times и ns – ошибка.
Обратите внимание, что точные времена, установленные здесь, могут не возвращаться последующим вызовом
stat()в зависимости от разрешения, с которым ваша операционная система записывает время доступа и изменения; см.stat(). Лучший способ сохранить точные времена – использовать поля st_atime_ns и st_mtime_ns из объекта результатаos.stat()с параметром ns дляutime().Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Возбуждает событие аудита
os.utimeс аргументамиpath,times,ns,dir_fd.Изменено в версии 3.3: Добавлена поддержка указания path в качестве открытого файлового дескриптора, и параметров dir_fd, follow_symlinks и ns.
Изменено в версии 3.6: Принимает объект, подобный пути.
- os.walk(top, topdown=True, onerror=None, followlinks=False)¶
Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге top (включая сам top) возвращает кортеж из трех элементов
(dirpath, dirnames, filenames).dirpath – строка, путь к каталогу. dirnames – список имен подкаталогов в dirpath (включая символические ссылки на каталоги и исключая
'.'и'..'). filenames – список имен файлов, не являющихся каталогами, в dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с top) к файлу или каталогу в dirpath, используйтеos.path.join(dirpath, name). Отсортированы списки или нет, зависит от файловой системы. Если файл удаляется или добавляется в каталог dirpath во время формирования списков, будет ли включено имя этого файла, не определено.Если необязательный аргумент topdown равен
Trueили не указан, тройка для каталога генерируется до троек для всех его подкаталогов (каталоги обходятся сверху вниз). Если topdown равенFalse, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх). Независимо от значения topdown, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.Когда topdown равен
True, вызывающий код может изменить список dirnames на месте (возможно, используяdelили присваивание срезу), иwalk()будет рекурсивно обходить только те подкаталоги, имена которых остались в dirnames; это можно использовать для обрезания дерева поиска, задания определенного порядка обхода или даже для уведомленияwalk()о каталогах, которые вызывающий код создает или переименовывает до того, какwalk()возобновит работу. Изменение dirnames, когда topdown равенFalse, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в dirnames генерируются до того, как генерируется сам dirpath.По умолчанию ошибки из вызова
scandir()игнорируются. Если указан необязательный аргумент onerror, это должна быть функция; она будет вызвана с одним аргументом – экземпляромOSError. Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибутfilenameобъекта исключения.По умолчанию
walk()не будет спускаться в символические ссылки, ведущие к каталогам. Установите followlinks вTrue, чтобы посещать каталоги, на которые указывают симлинки, в системах, поддерживающих их.Примечание
Имейте в виду, что установка followlinks в
Trueможет привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя.walk()не отслеживает уже посещенные каталоги.Примечание
Если передается относительный путь, не следует изменять текущий рабочий каталог между возобновлениями
walk().walk()никогда не меняет текущий каталог и предполагает, что и его вызывающий код этого не делает.В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере (простая реализация
shutil.rmtree()) обход дерева снизу вверх обязателен:rmdir()не позволяет удалить каталог, пока он не пуст:# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
Возбуждает событие аудита
os.walkс аргументамиtop,topdown,onerror,followlinks.Изменено в версии 3.5: Эта функция теперь вызывает
os.scandir()вместоos.listdir(), что делает её быстрее за счет сокращения количества вызововos.stat().Изменено в версии 3.6: Принимает объект, подобный пути.
- os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶
Это работает точно так же, как и
walk(), за исключением того, что возвращает 4-кортеж(dirpath, dirnames, filenames, dirfd), и поддерживаетdir_fd.dirpath, dirnames и filenames идентичны выводу
walk(), а dirfd – это файловый дескриптор, указывающий на каталог dirpath.This function always supports paths relative to directory descriptors and not following symlinks. Note however that, unlike other functions, the
fwalk()default value for follow_symlinks isFalse.Примечание
Поскольку
fwalk()возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощьюdup()), если нужно сохранить их дольше.В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): print(root, "consumes", end="") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end="") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере обход дерева снизу вверх необходим:
rmdir()не позволяет удалить каталог, пока он не пуст:# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
Возбуждает событие аудита
os.fwalkс аргументамиtop,topdown,onerror,follow_symlinks,dir_fd.Доступность: Unix.
Новое в версии 3.3.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.7: Добавлена поддержка путей
bytes.
- os.memfd_create(name[, flags=os.MFD_CLOEXEC])¶
Создаёт анонимный файл и возвращает файловый дескриптор, ссылающийся на него. Параметр flags должен быть одной из констант
os.MFD_*, доступных в системе (или их побитовой комбинацией). По умолчанию новый файловый дескриптор является ненаследуемым.Имя, переданное в name, используется как имя файла и будет отображаться как цель соответствующей символьной ссылки в каталоге
/proc/self/fd/. Отображаемое имя всегда имеет префиксmemfd:и служит только для отладки. Имена не влияют на поведение файлового дескриптора, поэтому несколько файлов могут иметь одно и то же имя без каких-либо побочных эффектов.Доступность: Linux >= 3.17 с glibc >= 2.27.
Новое в версии 3.8.
- os.MFD_CLOEXEC¶
- os.MFD_ALLOW_SEALING¶
- os.MFD_HUGETLB¶
- os.MFD_HUGE_SHIFT¶
- os.MFD_HUGE_MASK¶
- os.MFD_HUGE_64KB¶
- os.MFD_HUGE_512KB¶
- os.MFD_HUGE_1MB¶
- os.MFD_HUGE_2MB¶
- os.MFD_HUGE_8MB¶
- os.MFD_HUGE_16MB¶
- os.MFD_HUGE_32MB¶
- os.MFD_HUGE_256MB¶
- os.MFD_HUGE_512MB¶
- os.MFD_HUGE_1GB¶
- os.MFD_HUGE_2GB¶
- os.MFD_HUGE_16GB¶
Эти флаги могут быть переданы в
memfd_create().Доступность: Linux >= 3.17 с glibc >= 2.27
Флаги
MFD_HUGE*доступны только начиная с Linux 4.14.Новое в версии 3.8.
- os.eventfd(initval[, flags=os.EFD_CLOEXEC])¶
Создаёт и возвращает файловый дескриптор события. Этот дескриптор поддерживает
read()иwrite()с буфером размером 8,select(),poll()и подобные. Подробнее см. на странице руководства eventfd(2). По умолчанию новый файловый дескриптор является ненаследуемым.initval – начальное значение счётчика событий. Начальное значение должно быть 32-битным целым без знака. Обратите внимание: начальное значение ограничено 32-битным целым без знака, хотя счётчик событий представляет собой 64-битное целое без знака с максимальным значением 264-2.
flags может быть составлен из
EFD_CLOEXEC,EFD_NONBLOCKиEFD_SEMAPHORE.Если указан
EFD_SEMAPHOREи счётчик событий не равен нулю,eventfd_read()возвращает 1 и уменьшает счётчик на единицу.Если
EFD_SEMAPHOREне указан и счётчик событий не равен нулю,eventfd_read()возвращает текущее значение счётчика и сбрасывает его в ноль.Если счётчик событий равен нулю и
EFD_NONBLOCKне указан,eventfd_read()блокируется.eventfd_write()увеличивает счётчик событий. Запись блокируется, если операция записи увеличила бы счётчик до значения, превышающего 264-2.Пример:
import os # семафор с начальным значением '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC) try: # захватить семафор v = os.eventfd_read(fd) try: do_work() finally: # освободить семафор os.eventfd_write(fd, v) finally: os.close(fd)
Доступность: Linux >= 2.6.27 с glibc >= 2.8
Новое в версии 3.10.
- os.eventfd_read(fd)¶
Читает значение из файлового дескриптора
eventfd()и возвращает 64-битное целое без знака. Функция не проверяет, является ли fd файловым дескрипторомeventfd().Доступность: Linux >= 2.6.27
Новое в версии 3.10.
- os.eventfd_write(fd, value)¶
Добавляет значение в файловый дескриптор
eventfd(). value должно быть 64-битным целым без знака. Функция не проверяет, является ли fd файловым дескрипторомeventfd().Доступность: Linux >= 2.6.27
Новое в версии 3.10.
- os.EFD_CLOEXEC¶
Устанавливает флаг close-on-exec для нового файлового дескриптора
eventfd().Доступность: Linux >= 2.6.27
Новое в версии 3.10.
- os.EFD_NONBLOCK¶
Устанавливает флаг состояния
O_NONBLOCKдля нового файлового дескриптораeventfd().Доступность: Linux >= 2.6.27
Новое в версии 3.10.
- os.EFD_SEMAPHORE¶
Обеспечивает семафороподобную семантику для чтения из файлового дескриптора
eventfd(). При чтении внутренний счётчик уменьшается на единицу.Доступность: Linux >= 2.6.30
Новое в версии 3.10.
Расширенные атрибуты Linux¶Linux extended attributes
Новое в версии 3.3.
Все эти функции доступны только в Linux.
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть bytes или str (напрямую или косвенно через интерфейс
PathLike). Если это str, он кодируется с использованием кодировки файловой системы.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Возбуждает событие аудита
os.getxattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
- os.listxattr(path=None, *, follow_symlinks=True)¶
Возвращает список расширенных атрибутов файловой системы для path. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если path равен
None,listxattr()будет исследовать текущий каталог.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Вызывает событие аудита
os.listxattrс аргументомpath.Изменено в версии 3.6: Принимает объект, подобный пути.
- os.removexattr(path, attribute, *, follow_symlinks=True)¶
Удаляет расширенный атрибут файловой системы attribute из path. attribute должен быть bytes или str (напрямую или косвенно через интерфейс
PathLike). Если это строка, она кодируется с использованием кодировки файловой системы и обработчика ошибок.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Возбуждает событие аудита
os.removexattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
- os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶
Устанавливает расширенный атрибут файловой системы attribute для path в значение value. attribute должен быть bytes или str без встроенных NUL-символов (напрямую или косвенно через интерфейс
PathLike). Если это str, он кодируется с использованием кодировки файловой системы и обработчика ошибок. flags может бытьXATTR_REPLACEилиXATTR_CREATE. Если указанXATTR_REPLACEи атрибут не существует, будет вызваноENODATA. Если указанXATTR_CREATEи атрибут уже существует, атрибут не будет создан, и будет вызваноEEXISTS.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Примечание
В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.
Возбуждает событие аудита
os.setxattrс аргументамиpath,attribute,value,flags.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
- os.XATTR_SIZE_MAX¶
Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.
- os.XATTR_CREATE¶
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна создать атрибут.
- os.XATTR_REPLACE¶
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна заменить существующий атрибут.
Управление процессами¶Process Management
Эти функции можно использовать для создания процессов и управления ими.
Различные функции exec* принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это argv[0], передаваемый в main() программы. Например, os.execv('/bin/echo',
['foo', 'bar']) выведет на стандартный вывод только bar; foo будет проигнорирован.
- os.abort()¶
Генерирует сигнал
SIGABRTдля текущего процесса. На Unix поведение по умолчанию – создание дампа памяти; на Windows процесс немедленно возвращает код завершения3. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный дляSIGABRTс помощьюsignal.signal().
- os.add_dll_directory(path)¶
Добавляет путь в путь поиска DLL.
Этот путь поиска используется при разрешении зависимостей импортированных модулей-расширений (сам модуль разрешается через
sys.path), а также функциямиctypes.Удалите каталог, вызвав close() для возвращённого объекта или используя его в выражении
with.Смотрите документацию Microsoft для получения дополнительной информации о загрузке DLL.
Вызывает событие аудита
os.add_dll_directoryс аргументомpath.Доступность: Windows.
Новое в версии 3.8: в предыдущих версиях CPython разрешение DLL выполнялось с использованием стандартного поведения текущего процесса. Это приводило к несостыковкам: например, поиск иногда происходил только в
PATHили в текущем рабочем каталоге, а системные функции вродеAddDllDirectoryне оказывали влияния.В версии 3.8 два основных способа загрузки DLL теперь явно переопределяют поведение на уровне процесса для обеспечения согласованности. Смотрите примечания по переносу для информации об обновлении библиотек.
- os.execl(path, arg0, arg1, ...)¶
- os.execle(path, arg0, arg1, ..., env)¶
- os.execlp(file, arg0, arg1, ...)¶
- os.execlpe(file, arg0, arg1, ..., env)¶
- os.execv(path, args)¶
- os.execve(path, args, env)¶
- os.execvp(file, args)¶
- os.execvpe(file, args, env)¶
Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и получает тот же идентификатор процесса, что и вызывающий. Ошибки сообщаются как исключения
OSError.Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому если на этих открытых файлах могут быть буферизованные данные, следует сбросить их с помощью
sys.stdout.flush()илиos.fsync()перед вызовом функцииexec*.Варианты с буквами «l» и «v» функций
exec*различаются способом передачи аргументов командной строки. Варианты «l», пожалуй, проще в использовании, если количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными аргументами функцийexecl*(). Варианты «v» удобны, когда количество параметров переменное: аргументы передаются в виде списка или кортежа как параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, хотя это и не принудительно.Варианты, содержащие "p" ближе к концу (
execlp(),execlpe(),execvp()иexecvpe()), используют переменную окруженияPATHдля поиска файла программы. При замене окружения (с помощью одного из вариантовexec*e, обсуждаемых в следующем абзаце) новая среда используется как источник переменнойPATH. Остальные варианты,execl(),execle(),execv()иexecve(), не используют переменнуюPATHдля поиска исполняемого файла; path должен содержать правильный абсолютный или относительный путь.Для
execle(),execlpe(),execve()иexecvpe()(обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, используемым для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функцииexecl(),execlp(),execv()иexecvp()заставляют новый процесс наследовать окружение текущего процесса.Для
execve()на некоторых платформах path также может быть указан в виде открытого файлового дескриптора. Эта функциональность может не поддерживаться на вашей платформе; можно проверить, доступна ли она, с помощьюos.supports_fd. Если она недоступна, её использование вызоветNotImplementedError.Вызывает событие аудита
os.execс аргументамиpath,args,env.Доступность: Unix, Windows, не Emscripten, не WASI.
Изменено в версии 3.3: Добавлена поддержка указания path в виде открытого файлового дескриптора для
execve().Изменено в версии 3.6: Принимает объект, подобный пути.
- os._exit(n)¶
Завершает процесс с кодом n, без вызова обработчиков очистки, сброса буферов stdio и т.д.
Примечание
Стандартный способ завершения –
sys.exit(n)._exit()обычно следует использовать только в дочернем процессе послеfork().
Определены следующие коды завершения, которые можно использовать с _exit(), хотя они не обязательны. Обычно они используются для системных программ, написанных на Python, например, для внешней программы доставки команд почтового сервера.
Примечание
Некоторые из них могут быть недоступны на всех платформах Unix, поскольку есть различия. Эти константы определены там, где они определены базовой платформой.
- os.EX_OK¶
Код завершения, означающий, что ошибок не произошло. Может быть взят из определённого значения
EXIT_SUCCESSна некоторых платформах. Обычно имеет значение ноль.Доступность: Unix, Windows.
- os.EX_USAGE¶
Код завершения, означающий, что команда была использована неправильно, например, когда передано неверное количество аргументов.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_DATAERR¶
Код завершения, означающий, что входные данные были некорректны.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_NOINPUT¶
Код завершения, означающий, что входной файл не существовал или не был доступен для чтения.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_NOUSER¶
Код завершения, означающий, что указанный пользователь не существовал.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_NOHOST¶
Код завершения, означающий, что указанный хост не существовал.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_UNAVAILABLE¶
Код завершения, означающий, что требуемая служба недоступна.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_SOFTWARE¶
Код завершения, означающий, что обнаружена внутренняя программная ошибка.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_OSERR¶
Код завершения, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_OSFILE¶
Код завершения, означающий, что некоторый системный файл не существовал, не мог быть открыт или содержал ошибку другого рода.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_CANTCREAT¶
Код завершения, означающий, что указанный пользователем выходной файл не удалось создать.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_IOERR¶
Код выхода, означающий ошибку ввода-вывода при работе с каким-то файлом.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_TEMPFAIL¶
Код выхода, означающий временный сбой. Указывает на ситуацию, которая может и не быть ошибкой – например, на невозможность установить сетевое соединение при повторяемой операции.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_PROTOCOL¶
Код выхода, означающий, что обмен по протоколу был недопустимым, недействительным или нераспознанным.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_NOPERM¶
Код выхода, сообщающий о недостаточных правах для выполнения операции (не относится к проблемам файловой системы).
Доступность: Unix, не Emscripten, не WASI.
- os.EX_CONFIG¶
Код выхода, указывающий на ошибку конфигурации.
Доступность: Unix, не Emscripten, не WASI.
- os.EX_NOTFOUND¶
Код выхода, означающий нечто вроде «запись не найдена».
Доступность: Unix, не Emscripten, не WASI.
- os.fork()¶
Порождает дочерний процесс. Возвращает
0в дочернем процессе и идентификатор дочернего процесса в родительском. При возникновении ошибки возбуждаетсяOSError.Некоторые платформы, включая FreeBSD <= 6.3 и Cygwin, имеют известные проблемы при использовании
fork()из потока.Возбуждает событие аудита
os.forkбез аргументов.Предупреждение
В macOS использование этой функции небезопасно в сочетании с высокоуровневыми системными API, в том числе с
urllib.request.Изменено в версии 3.8: Вызов
fork()в подынтерпретаторе больше не поддерживается (возбуждаетсяRuntimeError).Предупреждение
См.
sslдля приложений, использующих модуль SSL с fork().Доступность: Unix, не Emscripten, не WASI.
- os.forkpty()¶
Создаёт дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару
(pid, fd), где pid равен0в дочернем процессе, а в родительском – идентификатор нового дочернего процесса, и fd – это файловый дескриптор ведущего конца псевдотерминала. Для более переносимого подхода используйте модульpty. Если возникает ошибка, возбуждаетсяOSError.Возбуждает событие аудита
os.forkptyбез аргументов.Предупреждение
В macOS использование этой функции небезопасно в сочетании с высокоуровневыми системными API, в том числе с
urllib.request.Изменено в версии 3.8: Вызов
forkpty()в подынтерпретаторе больше не поддерживается (возбуждаетсяRuntimeError).Доступность: Unix, не Emscripten, не WASI.
- os.kill(pid, sig, /)¶
Отправляет сигнал sig процессу pid. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле
signal.Windows: Сигналы
signal.CTRL_C_EVENTиsignal.CTRL_BREAK_EVENT– это специальные сигналы, которые можно отправлять только консольным процессам, имеющим общее окно консоли, например, некоторым подпроцессам. Любое другое значение sig приведет к безусловному завершению процесса через API TerminateProcess, а код возврата будет установлен в sig. Версияkill()для Windows дополнительно принимает дескрипторы процессов для завершения.См. также
signal.pthread_kill().Возбуждает событие аудита
os.killс аргументамиpid,sig.Доступность: Unix, Windows, не Emscripten, не WASI.
Изменено в версии 3.2: Добавлена поддержка Windows.
- os.killpg(pgid, sig, /)¶
Отправить сигнал sig группе процессов pgid.
Возбуждает событие аудита
os.killpgс аргументамиpgid,sig.Доступность: Unix, не Emscripten, не WASI.
- os.nice(increment, /)¶
Добавить increment к «приоритету» процесса. Возвращает новый приоритет.
Доступность: Unix, не Emscripten, не WASI.
- os.pidfd_open(pid, flags=0)¶
Возвращает файловый дескриптор, ссылающийся на процесс pid. Этот дескриптор можно использовать для управления процессом без состояний гонки и сигналов. Аргумент flags предусмотрен для будущих расширений; в настоящее время значения флагов не определены.
См. man-страницу pidfd_open(2) для подробностей.
Доступность: Linux >= 5.3
Новое в версии 3.9.
- os.plock(op, /)¶
Блокирует сегменты программы в памяти. Значение op (определённое в
<sys/lock.h>) определяет, какие сегменты блокируются.Доступность: Unix, не Emscripten, не WASI.
- os.popen(cmd, mode='r', buffering=-1)¶
Открывает канал от команды cmd или к ней. Возвращаемое значение – открытый файловый объект, подключённый к каналу, который можно читать или записывать в него в зависимости от того, равен ли mode
'r'(по умолчанию) или'w'. Аргумент buffering имеет тот же смысл, что и соответствующий аргумент встроенной функцииopen(). Возвращаемый файловый объект читает или записывает строки текста, а не байты.Метод
closeвозвращаетNone, если подпроцесс завершился успешно, или код возврата подпроцесса в случае ошибки. В системах POSIX, если код возврата положительный, он представляет собой возвращаемое значение процесса, сдвинутое влево на один байт. Если код возврата отрицательный, процесс был завершён сигналом, соответствующим отрицательному значению кода возврата. (Например, возвращаемое значение может быть- signal.SIGKILL, если подпроцесс был убит.) В системах Windows возвращаемое значение содержит знаковый целочисленный код возврата дочернего процесса.В Unix
waitstatus_to_exitcode()можно использовать для преобразования результата методаclose(статуса выхода) в код выхода, если он не равенNone. В Windows результат методаcloseнепосредственно является кодом выхода (илиNone).Это реализовано с помощью
subprocess.Popen; обратитесь к документации этого класса для получения более мощных способов управления подпроцессами и общения с ними.Доступность: not Emscripten, not WASI.
Примечание
Режим UTF-8 Python влияет на кодировки, используемые для cmd и содержимого канала.
popen()– это простая обёртка вокругsubprocess.Popen. Используйтеsubprocess.Popenилиsubprocess.run()для управления такими параметрами, как кодировки.
- os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Обёртка для API библиотеки C
posix_spawn()для использования из Python.Большинству пользователей следует использовать
subprocess.run()вместоposix_spawn().Позиционные аргументы path, args и env аналогичны
execve().Параметр path – это путь к исполняемому файлу. path должен содержать каталог. Используйте
posix_spawnp()для передачи исполняемого файла без каталога.Аргумент file_actions может быть последовательностью кортежей, описывающих действия над определёнными файловыми дескрипторами в дочернем процессе между шагами
fork()иexec()реализации библиотеки C. Первый элемент каждого кортежа должен быть одним из трёх индикаторов типа, перечисленных ниже, описывающих остальные элементы кортежа:- os.POSIX_SPAWN_OPEN¶
(
os.POSIX_SPAWN_OPEN, fd, path, flags, mode)Выполняет
os.dup2(os.open(path, flags, mode), fd).
- os.POSIX_SPAWN_CLOSE¶
(
os.POSIX_SPAWN_CLOSE, fd)Выполняет
os.close(fd).
- os.POSIX_SPAWN_DUP2¶
(
os.POSIX_SPAWN_DUP2, fd, new_fd)Выполняет
os.dup2(fd, new_fd).
Эти кортежи соответствуют вызовам API библиотеки C
posix_spawn_file_actions_addopen(),posix_spawn_file_actions_addclose()иposix_spawn_file_actions_adddup2(), которые используются для подготовки самого вызоваposix_spawn().Аргумент setpgroup устанавливает группу процессов дочернего процесса в указанное значение. Если указано значение 0, идентификатор группы процессов дочернего процесса будет равен его идентификатору процесса. Если значение setpgroup не задано, дочерний процесс наследует идентификатор группы процессов родительского процесса. Этот аргумент соответствует флагу
POSIX_SPAWN_SETPGROUPбиблиотеки C.Если аргумент resetids равен
True, он сбрасывает эффективные UID и GID дочернего процесса в реальные UID и GID родительского процесса. Если аргумент равенFalse, дочерний процесс сохраняет эффективные UID и GID родителя. В любом случае, если на исполняемом файле установлены биты разрешений set-user-ID и set-group-ID, их действие переопределит настройку эффективных UID и GID. Этот аргумент соответствует флагуPOSIX_SPAWN_RESETIDSбиблиотеки C.Если аргумент setsid равен
True, он создаёт новый идентификатор сессии дляposix_spawn. setsid требует флагPOSIX_SPAWN_SETSIDилиPOSIX_SPAWN_SETSID_NP. В противном случае возбуждаетсяNotImplementedError.Аргумент setsigmask устанавливает маску сигналов в указанный набор. Если параметр не используется, дочерний процесс наследует маску сигналов родителя. Этот аргумент соответствует флагу
POSIX_SPAWN_SETSIGMASKбиблиотеки C.Аргумент sigdef сбрасывает диспозицию всех сигналов в указанном наборе. Этот аргумент соответствует флагу
POSIX_SPAWN_SETSIGDEFбиблиотеки C.Аргумент scheduler должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр
sched_paramс параметрами планировщика. ЗначениеNoneна месте политики планировщика указывает, что она не предоставлена. Этот аргумент является комбинацией флаговPOSIX_SPAWN_SETSCHEDPARAMиPOSIX_SPAWN_SETSCHEDULERбиблиотеки C.Вызывает событие аудита
os.posix_spawnс аргументамиpath,argv,env.Новое в версии 3.8.
Доступность: Unix, не Emscripten, не WASI.
- os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶
Обёртка для API библиотеки C
posix_spawnp()для использования из Python.Аналогичен
posix_spawn(), за исключением того, что система ищет исполняемый файл executable в списке каталогов, заданных переменной окруженияPATH(так же, как и дляexecvp(3)).Вызывает событие аудита
os.posix_spawnс аргументамиpath,argv,env.Новое в версии 3.8.
Доступность: POSIX, не Emscripten, не WASI.
См. документацию
posix_spawn().
- os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)¶
Регистрирует вызываемые объекты, которые будут выполнены при порождении нового дочернего процесса с помощью
os.fork()или аналогичных API клонирования процессов. Параметры являются необязательными и только именованными. Каждый задаёт свою точку вызова.before – функция, вызываемая перед порождением дочернего процесса.
after_in_parent – функция, вызываемая из родительского процесса после порождения дочернего процесса.
after_in_child – функция, вызываемая из дочернего процесса.
Эти вызовы выполняются только в том случае, если ожидается возврат управления в интерпретатор Python. Типичный запуск
subprocessне вызовет их, так как дочерний процесс не будет возвращаться в интерпретатор.Функции, зарегистрированные для выполнения перед порождением, вызываются в обратном порядке регистрации. Функции, зарегистрированные для выполнения после порождения (как в родителе, так и в дочернем процессе), вызываются в порядке регистрации.
Обратите внимание, что вызовы
fork(), выполняемые сторонним кодом на C, могут не вызывать эти функции, если только он явно не вызываетPyOS_BeforeFork(),PyOS_AfterFork_Parent()иPyOS_AfterFork_Child().Невозможно отменить регистрацию функции.
Доступность: Unix, не Emscripten, не WASI.
Добавлено в версии 3.7.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
Выполняет программу path в новом процессе.
(Обратите внимание, что модуль
subprocessпредоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно см. раздел Замена старых функций модулем subprocess.)Если mode равен
P_NOWAIT, эта функция возвращает идентификатор нового процесса; если mode равенP_WAIT, возвращает код выхода процесса, если он завершился нормально, или-signal, где signal – сигнал, который завершил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функциейwaitpid().Примечание: в VxWorks эта функция не возвращает
-signal, когда новый процесс завершается. Вместо этого она вызывает исключение OSError.Варианты «l» и «v» функций
spawn*различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функцийspawnl*(). Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр args. В любом случае, аргументы дочернего процесса должны начинаться с имени выполняемой команды.Варианты, содержащие вторую «p» в конце (
spawnlp(),spawnlpe(),spawnvp()иspawnvpe()), используют переменную окруженияPATHдля поиска программы file. При замене окружения (с помощью одного из вариантовspawn*e, обсуждаемых в следующем абзаце) новое окружение используется как источник переменнойPATH. Другие варианты,spawnl(),spawnle(),spawnv()иspawnve(), не используют переменнуюPATHдля поиска исполняемого файла; path должен содержать подходящий абсолютный или относительный путь.Для
spawnle(),spawnlpe(),spawnve()иspawnvpe()(обратите внимание, все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функцииspawnl(),spawnlp(),spawnv()иspawnvp()заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками; недопустимые ключи или значения приведут к ошибке функции с возвращаемым значением127.В качестве примера следующие вызовы
spawnlp()иspawnvpe()эквивалентны:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Возбуждает событие аудита
os.spawnс аргументамиmode,path,args,env.Доступность: Unix, Windows, не Emscripten, не WASI.
spawnlp(),spawnlpe(),spawnvp()иspawnvpe()недоступны на Windows.spawnle()иspawnve()не являются потокобезопасными на Windows; вместо них рекомендуется использовать модульsubprocess.Изменено в версии 3.6: Принимает объект, подобный пути.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
Возможные значения параметра mode для семейства функций
spawn*. Если указано любое из этих значений, функцииspawn*возвращаются сразу после создания нового процесса, возвращая его идентификатор в качестве возвращаемого значения.Доступность: Unix, Windows.
- os.P_WAIT¶
Возможное значение параметра mode для семейства функций
spawn*. Если указано это значение как mode, функцииspawn*не вернутся, пока новый процесс не завершится, и вернут код выхода процесса в случае успешного завершения, или-signal, если сигнал завершит процесс.Доступность: Unix, Windows.
- os.P_DETACH¶
- os.P_OVERLAY¶
Возможные значения параметра mode для семейства функций
spawn*. Они менее переносимы, чем перечисленные выше.P_DETACHаналогиченP_NOWAIT, но новый процесс отсоединяется от консоли вызывающего процесса. Если используетсяP_OVERLAY, текущий процесс будет заменён; функцияspawn*не вернётся.Доступность: Windows.
- os.startfile(path[, operation][, arguments][, cwd][, show_cmd])¶
Запускает файл в связанном с ним приложении.
Если operation не указан или равен
'open', это работает как двойной щелчок по файлу в Проводнике Windows или передача имени файла в качестве аргумента команде start из интерактивной командной строки: файл открывается с помощью приложения, связанного с его расширением (если такое есть).Если указана другая operation, она должна быть «глаголом команды» (command verb), определяющим, что делать с файлом. Распространённые глаголы, задокументированные Microsoft:
'print'и'edit'(используются для файлов), а также'explore'и'find'(используются для каталогов).При запуске приложения укажите arguments для передачи в виде одной строки. Этот аргумент может не иметь эффекта при использовании этой функции для запуска документа.
Рабочий каталог по умолчанию наследуется, но может быть переопределён аргументом cwd. Он должен быть абсолютным путём. Относительный путь будет разрешаться относительно этого аргумента.
Используйте show_cmd, чтобы переопределить стиль окна по умолчанию. Будет ли это иметь какой-либо эффект, зависит от запускаемого приложения. Значения – целые числа, поддерживаемые функцией Win32
ShellExecute().startfile()возвращает управление сразу после запуска соответствующего приложения. Невозможно дождаться закрытия приложения или получить его код возврата. Параметр path задаётся относительно текущего каталога или cwd. Если нужно использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'). Используйтеpathlibили функциюos.path.normpath(), чтобы пути были корректно закодированы для Win32.Чтобы снизить накладные расходы на запуск интерпретатора, функция Win32
ShellExecute()не разрешается до первого вызова данной функции. Если функцию не удаётся разрешить, будет возбужденоNotImplementedError.Возбуждает событие аудита
os.startfileс аргументамиpath,operation.Возбуждает событие аудита
os.startfile/2с аргументамиpath,operation,arguments,cwd,show_cmd.Доступность: Windows.
Изменено в версии 3.10: Добавлены аргументы arguments, cwd и show_cmd, а также событие аудита
os.startfile/2.
- os.system(command)¶
Выполняет команду (строку) в подпроцессе. Реализована вызовом стандартной функции C
system()и имеет те же ограничения. Измененияsys.stdinи т.д. не отражаются в окружении выполняемой команды. Если command генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет смысл возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.В Unix возвращаемое значение – это статус выхода процесса, закодированный в формате, указанном для
wait().В Windows возвращаемое значение – это значение, возвращаемое системной оболочкой после выполнения command. Оболочка задаётся переменной окружения Windows
COMSPEC: обычно это cmd.exe, которая возвращает статус выхода выполненной команды; в системах, использующих нестандартную оболочку, обратитесь к документации вашей оболочки.Модуль
subprocessпредоставляет более мощные средства для порождения новых процессов и получения их результатов; предпочтительнее использовать этот модуль, а не данную функцию. Смотрите раздел Замена старых функций модулем subprocess в документацииsubprocess, где приведены полезные рецепты.В Unix
waitstatus_to_exitcode()можно использовать для преобразования результата (статуса выхода) в код возврата. В Windows результат напрямую является кодом возврата.Вызывает событие аудита
os.systemс аргументомcommand.Доступность: Unix, Windows, не Emscripten, не WASI.
- os.times()¶
Возвращает текущие глобальные времена процесса. Возвращаемое значение – объект с пятью атрибутами:
user– пользовательское времяsystem– системное времяchildren_user– пользовательское время всех дочерних процессовchildren_system– системное время всех дочерних процессовelapsed– прошедшее реальное время с фиксированной точки в прошлом
Для обратной совместимости этот объект также ведёт себя как кортеж из пяти элементов, содержащий
user,system,children_user,children_systemиelapsedв указанном порядке.См. страницу руководства Unix times(2) и страницу times(3) в Unix или GetProcessTimes в MSDN в Windows. В Windows известны только
userиsystem; остальные атрибуты равны нулю.Доступность: Unix, Windows.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.
- os.wait()¶
Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.
Если нет дочерних процессов, которых можно ожидать, возбуждается
ChildProcessError.waitstatus_to_exitcode()можно использовать для преобразования статуса завершения в код завершения.Доступность: Unix, не Emscripten, не WASI.
См. также
Другие функции
wait*(), описанные ниже, можно использовать для ожидания завершения конкретного дочернего процесса; они предоставляют больше возможностей.waitpid()– единственная из них, также доступная в Windows.
- os.waitid(idtype, id, options, /)¶
Ожидает завершения дочернего процесса.
idtype может быть
P_PID,P_PGID,P_ALLили (в Linux)P_PIDFD. Интерпретация id зависит от него; смотрите их индивидуальные описания.options – это комбинация флагов по ИЛИ. Требуется хотя бы один из
WEXITED,WSTOPPEDилиWCONTINUED;WNOHANGиWNOWAIT– дополнительные необязательные флаги.Возвращаемое значение – объект, представляющий данные, содержащиеся в структуре
siginfo_t, со следующими атрибутами:si_pid(идентификатор процесса)si_uid(реальный идентификатор пользователя дочернего процесса)si_signo(всегдаSIGCHLD)si_status(статус завершения или номер сигнала, в зависимости отsi_code)si_code(см.CLD_EXITEDдля возможных значений)
Если указан
WNOHANGи нет подходящих дочерних процессов в запрошенном состоянии, возвращаетсяNone. Иначе, если нет подходящих дочерних процессов, которые можно ожидать, возбуждаетсяChildProcessError.Доступность: Unix, не Emscripten, не WASI.
Примечание
Эта функция недоступна на macOS.
Новое в версии 3.3.
- os.waitpid(pid, options, /)¶
Подробности этой функции различаются в Unix и Windows.
В Unix: ожидает завершения дочернего процесса, заданного идентификатором процесса pid, и возвращает кортеж, содержащий его идентификатор процесса и индикатор статуса завершения (закодированный как для
wait()). Семантика вызова зависит от значения целочисленного параметра options, который должен быть0для нормальной работы.Если pid больше
0,waitpid()запрашивает информацию о состоянии для этого конкретного процесса. Если pid равен0, запрос выполняется для состояния любого дочернего процесса в группе процессов текущего процесса. Если pid равен-1, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше-1, запрашивается состояние для любого процесса в группе процессов-pid(абсолютное значение pid).options представляет собой побитовое ИЛИ флагов. Если он содержит
WNOHANGи нет подходящих дочерних процессов в запрошенном состоянии, возвращается(0, 0). Иначе, если нет подходящих дочерних процессов, которые можно ожидать, возбуждаетсяChildProcessError. Другие параметры, которые можно использовать:WUNTRACEDиWCONTINUED.В Windows: ожидает завершения процесса, заданного дескриптором процесса pid, и возвращает кортеж, содержащий pid и его статус завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). pid, меньший или равный
0, не имеет особого смысла в Windows и вызывает исключение. Значение целочисленного параметра options не влияет на результат. pid может относиться к любому процессу, чей идентификатор известен, не обязательно дочернему. Функцииspawn*, вызванные сP_NOWAIT, возвращают подходящие дескрипторы процессов.waitstatus_to_exitcode()можно использовать для преобразования статуса завершения в код завершения.Доступность: Unix, Windows, не Emscripten, не WASI.
Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).
- os.wait3(options)¶
Похожа на
waitpid(), за исключением того, что аргумент идентификатора процесса не передаётся, и возвращается кортеж из 3 элементов, содержащий идентификатор процесса дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см.resource.getrusage(). Аргумент options такой же, как вwaitpid()иwait4().waitstatus_to_exitcode()можно использовать для преобразования статуса завершения в код завершения.Доступность: Unix, не Emscripten, не WASI.
- os.wait4(pid, options)¶
Похожа на
waitpid(), за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор процесса дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см.resource.getrusage(). Аргументыwait4()такие же, как вwaitpid().waitstatus_to_exitcode()можно использовать для преобразования статуса завершения в код завершения.Доступность: Unix, не Emscripten, не WASI.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
- os.P_PIDFD¶
Это возможные значения для idtype в
waitid(). Они влияют на то, как интерпретируется id:P_PID– ожидать дочерний процесс, чей PID равен id.P_PGID– ожидать любой дочерний процесс, чей идентификатор группы процессов равен id.P_ALL– ожидать любой дочерний процесс; id игнорируется.P_PIDFD– ожидать дочерний процесс, заданный файловым дескриптором id (дескриптор процесса, созданный с помощьюpidfd_open()).
Доступность: Unix, не Emscripten, не WASI.
Примечание
P_PIDFDдоступен только в Linux >= 5.4.Новое в версии 3.3.
Новое в версии 3.9: Константа
P_PIDFD.
- os.WCONTINUED¶
Этот флаг options для
waitpid(),wait3(),wait4()иwaitid()заставляет сообщать о дочерних процессах, если они были продолжены после остановки управления заданиями с момента последнего сообщения.Доступность: Unix, не Emscripten, не WASI.
- os.WEXITED¶
Этот флаг options для
waitid()заставляет сообщать о дочерних процессах, которые завершились.Другие функции
wait*всегда сообщают о завершившихся дочерних процессах, поэтому этот параметр для них недоступен.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.WSTOPPED¶
Этот флаг options для
waitid()заставляет сообщать о дочерних процессах, которые были остановлены доставкой сигнала.Этот параметр недоступен для других функций
wait*.Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
- os.WUNTRACED¶
Этот флаг options для
waitpid(),wait3()иwait4()заставляет также сообщать о дочерних процессах, если они были остановлены, но их текущее состояние не сообщалось с момента остановки.Этот параметр недоступен для
waitid().Доступность: Unix, не Emscripten, не WASI.
- os.WNOHANG¶
Этот флаг options заставляет
waitpid(),wait3(),wait4()иwaitid()возвращаться немедленно, если статус дочернего процесса недоступен сразу.Доступность: Unix, не Emscripten, не WASI.
- os.WNOWAIT¶
Этот флаг options заставляет
waitid()оставить дочерний процесс в состоянии ожидания, чтобы позднее можно было использовать вызовwait*()для повторного получения информации о статусе дочернего процесса.Этот параметр недоступен для других функций
wait*.Доступность: Unix, не Emscripten, не WASI.
- os.CLD_EXITED¶
- os.CLD_KILLED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_STOPPED¶
- os.CLD_CONTINUED¶
Это возможные значения для
si_codeв результате, возвращаемомwaitid().Доступность: Unix, не Emscripten, не WASI.
Новое в версии 3.3.
Изменено в версии 3.9: Добавлены значения
CLD_KILLEDиCLD_STOPPED.
- os.waitstatus_to_exitcode(status)¶
Преобразует статус ожидания в код возврата.
В Unix:
Если процесс завершился нормально (если
WIFEXITED(status)истинно), возвращает статус выхода процесса (возвращаетWEXITSTATUS(status)): результат больше или равен 0.Если процесс был завершён сигналом (если
WIFSIGNALED(status)истинно), возвращает-signum, где signum – это номер сигнала, который привёл к завершению процесса (возвращает-WTERMSIG(status)): результат меньше 0.В противном случае возбуждает
ValueError.
В Windows возвращает status, сдвинутый вправо на 8 бит.
В Unix, если процесс трассируется или
waitpid()был вызван с опциейWUNTRACED, вызывающая сторона должна сначала проверить, истинно лиWIFSTOPPED(status). Эта функция не должна вызываться, еслиWIFSTOPPED(status)истинно.См. также
WIFEXITED(),WEXITSTATUS(),WIFSIGNALED(),WTERMSIG(),WIFSTOPPED(),WSTOPSIG()функции.Доступность: Unix, Windows, не Emscripten, не WASI.
Новое в версии 3.9.
Следующие функции принимают код состояния процесса, возвращаемый
system(), wait() или waitpid(), в качестве параметра. Они могут использоваться
для определения статуса процесса.
- os.WCOREDUMP(status, /)¶
Возвращает
True, если для процесса был создан дамп ядра, в противном случае возвращаетFalse.Эту функцию следует использовать, только если
WIFSIGNALED()истинно.Доступность: Unix, не Emscripten, не WASI.
- os.WIFCONTINUED(status)¶
Возвращает
True, если остановленный дочерний процесс был возобновлён доставкойSIGCONT(если процесс был продолжен после остановки управления заданиями), в противном случае возвращаетFalse.См. опцию
WCONTINUED.Доступность: Unix, не Emscripten, не WASI.
- os.WIFSTOPPED(status)¶
Возвращает
True, если процесс был остановлен доставкой сигнала, в противном случае возвращаетFalse.WIFSTOPPED()возвращаетTrueтолько если вызовwaitpid()был выполнен с опциейWUNTRACEDили когда процесс трассируется (см. ptrace(2)).Доступность: Unix, не Emscripten, не WASI.
- os.WIFSIGNALED(status)¶
Возвращает
True, если процесс был завершён сигналом, в противном случае возвращаетFalse.Доступность: Unix, не Emscripten, не WASI.
- os.WIFEXITED(status)¶
Возвращает
True, если процесс завершился нормально, то есть вызовомexit()или_exit(), или возвратом изmain(); в противном случае возвращаетFalse.Доступность: Unix, не Emscripten, не WASI.
- os.WEXITSTATUS(status)¶
Возвращает код завершения процесса.
Эту функцию следует использовать, только если
WIFEXITED()истинно.Доступность: Unix, не Emscripten, не WASI.
- os.WSTOPSIG(status)¶
Возвращает сигнал, который вызвал остановку процесса.
Эту функцию следует использовать, только если
WIFSTOPPED()истинно.Доступность: Unix, не Emscripten, не WASI.
- os.WTERMSIG(status)¶
Возвращает номер сигнала, который вызвал завершение процесса.
Эту функцию следует использовать, только если
WIFSIGNALED()истинно.Доступность: Unix, не Emscripten, не WASI.
Интерфейс к планировщику¶Interface to the scheduler
Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.
Новое в версии 3.3.
Следующие политики планирования доступны, если они поддерживаются операционной системой.
- os.SCHED_OTHER¶
Политика планирования по умолчанию.
- os.SCHED_BATCH¶
Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.
- os.SCHED_IDLE¶
Политика планирования для фоновых задач с очень низким приоритетом.
- os.SCHED_SPORADIC¶
Политика планирования для спорадических серверных программ.
- os.SCHED_FIFO¶
Политика планирования «первым пришёл, первым обслужен».
- os.SCHED_RR¶
Циклическая политика планирования.
- os.SCHED_RESET_ON_FORK¶
Этот флаг можно объединить с любой другой политикой планирования с помощью ИЛИ. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет дочернего процесса сбрасываются на значения по умолчанию.
- class os.sched_param(sched_priority)¶
Этот класс представляет настраиваемые параметры планирования, используемые в
sched_setparam(),sched_setscheduler()иsched_getparam(). Он неизменяем.В настоящее время существует только один возможный параметр:
- sched_priority¶
Приоритет планирования для политики планирования.
- os.sched_get_priority_min(policy)¶
Возвращает минимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
- os.sched_get_priority_max(policy)¶
Возвращает максимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
- os.sched_setscheduler(pid, policy, param, /)¶
Устанавливает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. policy – одна из констант политик планирования, описанных выше. param – экземпляр
sched_param.
- os.sched_getscheduler(pid, /)¶
Возвращает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.
- os.sched_setparam(pid, param, /)¶
Устанавливает параметры планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. param – экземпляр
sched_param.
- os.sched_getparam(pid, /)¶
Возвращает параметры планирования в виде экземпляра
sched_paramдля процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
- os.sched_rr_get_interval(pid, /)¶
Возвращает квант времени (round-robin) в секундах для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
- os.sched_yield()¶
Добровольно освобождает процессор.
- os.sched_setaffinity(pid, mask, /)¶
Ограничивает процесс с PID pid (или текущий процесс, если ноль) набором процессоров. Параметр mask – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.
- os.sched_getaffinity(pid, /)¶
Возвращает набор процессоров, к которым ограничен процесс с PID pid.
Если pid равен нулю, возвращает набор процессоров, к которым ограничен вызывающий поток текущего процесса.
Различная системная информация¶Miscellaneous System Information
- os.confstr(name, /)¶
Возвращает строковые значения системной конфигурации. name задаёт извлекаемое значение; это может быть строка – имя определённого системного значения; такие имена заданы в ряде стандартов (POSIX, Unix 95, Unix 98 и других). На некоторых платформах определены и дополнительные имена. Имена, известные хост-операционной системе, представлены в виде ключей словаря
confstr_names. Для тех переменных конфигурации, которых нет в этом отображении, также допускается передавать целое число в качестве name.Если значение конфигурации, указанное name, не определено, возвращается
None.Если name – строка и не известна, возбуждается исключение
ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно присутствует вconfstr_names, возбуждается исключениеOSErrorсerrno.EINVALв качестве кода ошибки.Доступность: Unix.
- os.confstr_names¶
Словарь, отображающий имена, принимаемые
confstr(), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.Доступность: Unix.
- os.cpu_count()¶
Возвращает количество логических процессоров в системе. Возвращает
None, если не определено.Это число не равно количеству логических процессоров, которые может использовать текущий процесс.
len(os.sched_getaffinity(0))возвращает количество логических процессоров, к которым ограничен вызывающий поток текущего процесса.Новое в версии 3.4.
- os.getloadavg()¶
Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает исключение
OSError, если среднюю нагрузку получить не удалось.Доступность: Unix.
- os.sysconf(name, /)¶
Возвращает целочисленные значения системной конфигурации. Если значение конфигурации, указанное name, не определено, возвращается
-1. Замечания относительно параметра name дляconfstr()применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётсяsysconf_names.Доступность: Unix.
- os.sysconf_names¶
Словарь, отображающий имена, принимаемые
sysconf(), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.Доступность: Unix.
Изменено в версии 3.11: Добавлено имя
'SC_MINSIGSTKSZ'.
Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.
Операции более высокого уровня с именами путей определены в модуле os.path.
- os.curdir¶
Строковая константа, используемая операционной системой для обращения к текущему каталогу. Для Windows и POSIX это
'.'. Также доступна черезos.path.
- os.pardir¶
Строковая константа, используемая операционной системой для обращения к родительскому каталогу. Для Windows и POSIX это
'..'. Также доступна черезos.path.
- os.sep¶
Символ, используемый операционной системой для разделения компонентов пути. Для POSIX это
'/', а для Windows –'\\'. Имейте в виду, что одного знания этого символа недостаточно для разбора или объединения путей – используйтеos.path.split()иos.path.join(), – но иногда это бывает полезно. Также доступен черезos.path.
- os.altsep¶
Альтернативный символ, используемый операционной системой для разделения компонентов пути, или
None, если существует только один символ-разделитель. В Windows, гдеsep– обратная косая черта, этот символ равен'/'. Также доступен черезos.path.
- os.extsep¶
Символ, отделяющий основное имя файла от расширения; например,
'.'вos.py. Также доступен черезos.path.
- os.pathsep¶
Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в
PATH), например':'для POSIX или';'для Windows. Также доступен черезos.path.
- os.defpath¶
Путь поиска по умолчанию, используемый
exec*p*иspawn*p*, если в окружении нет ключа'PATH'. Также доступен черезos.path.
- os.linesep¶
Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например
'\n'для POSIX, или несколько символов, например'\r\n'для Windows. Не используйте os.linesep в качестве символа конца строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте одиночный'\n'на всех платформах.
- os.devnull¶
Путь к нулевому устройству. Например:
'/dev/null'для POSIX,'nul'для Windows. Также доступен черезos.path.
- os.RTLD_LAZY¶
- os.RTLD_NOW¶
- os.RTLD_GLOBAL¶
- os.RTLD_LOCAL¶
- os.RTLD_NODELETE¶
- os.RTLD_NOLOAD¶
- os.RTLD_DEEPBIND¶
Флаги для использования с функциями
setdlopenflags()иgetdlopenflags(). Смотрите страницу руководства Unix dlopen(3), чтобы узнать значение различных флагов.Новое в версии 3.3.
Случайные числа¶Random numbers
- os.getrandom(size, flags=0)¶
Возвращает до size случайных байт. Функция может вернуть меньше байт, чем запрошено.
Эти байты можно использовать для начальной инициализации генераторов случайных чисел пользовательского пространства или для криптографических целей.
getrandom()полагается на энтропию, собранную от драйверов устройств и других источников шума окружения. Чрезмерное чтение больших объёмов данных негативно скажется на других пользователях устройств/dev/randomи/dev/urandom.Аргумент flags представляет собой битовую маску, которая может содержать ноль или более следующих значений, объединённых операцией OR:
os.GRND_RANDOMиGRND_NONBLOCK.См. также справочную страницу getrandom() в Linux.
Доступность: Linux >= 3.17.
Новое в версии 3.6.
- os.urandom(size, /)¶
Возвращает строку байтов длины size со случайными байтами, пригодными для использования в криптографии.
Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.
В Linux, если доступен системный вызов
getrandom(), он используется в блокирующем режиме: блокировка до инициализации пула энтропии urandom (ядро собирает 128 бит энтропии). Обоснование см. в PEP 524. В Linux функцияgetrandom()может использоваться для получения случайных байтов в неблокирующем режиме (с помощью флагаGRND_NONBLOCK) или для опроса до инициализации пула энтропии urandom.В Unix-подобных системах случайные байты читаются из устройства
/dev/urandom. Если устройство/dev/urandomнедоступно или нечитаемо, возбуждается исключениеNotImplementedError.В Windows используется
BCryptGenRandom().См. также
Модуль
secretsпредоставляет функции более высокого уровня. Для удобного интерфейса к генератору случайных чисел, предоставляемому платформой, см.random.SystemRandom.Изменено в версии 3.5: В Linux 3.17 и новее теперь используется системный вызов
getrandom(), когда он доступен. В OpenBSD 5.6 и новее теперь используется функция Cgetentropy(). Эти функции позволяют избежать использования внутреннего файлового дескриптора.Изменено в версии 3.5.2: В Linux, если системный вызов
getrandom()блокируется (пул энтропии urandom ещё не инициализирован), выполняется чтение из/dev/urandom.Изменено в версии 3.6: В Linux
getrandom()теперь используется в блокирующем режиме для повышения безопасности.Изменено в версии 3.11: В Windows
BCryptGenRandom()используется вместоCryptGenRandom(), который устарел.
- os.GRND_NONBLOCK¶
По умолчанию при чтении из
/dev/randomgetrandom()блокируется, если нет доступных случайных байтов, а при чтении из/dev/urandomблокируется, если пул энтропии ещё не инициализирован.Если установлен флаг
GRND_NONBLOCK, тоgetrandom()не блокируется в этих случаях, а вместо этого немедленно возбуждаетBlockingIOError.Новое в версии 3.6.
- os.GRND_RANDOM¶
Если этот бит установлен, то случайные байты берутся из пула
/dev/randomвместо пула/dev/urandom.Новое в версии 3.6.