os — Разнообразные интерфейсы операционной системы
Исходный код: Lib/os.py
Этот модуль предоставляет переносимый способ использования функциональности, зависящей от операционной системы. Если вам нужно просто прочитать или записать файл, см. open(), если вы хотите манипулировать путями, см. модуль os.path, а если вы хотите прочитать все строки во всех файлах в командной строке, см. модуль fileinput. Для создания временных файлов и каталогов см. модуль tempfile, а для обработки файлов и каталогов высокого уровня см. модуль shutil.
Примечания по доступности этих функций:
- Дизайн всех встроенных модулей операционной системы Python таков, что, пока доступна одинаковая функциональность, используется один и тот же интерфейс; например, функция
os.stat(path)возвращает информацию о статусе path в том же формате (который происходит от интерфейса POSIX). - Расширения, характерные для конкретной операционной системы, также доступны через модуль
os, но их использование, конечно, угрожает переносимости. - Все функции, принимающие имена путей или файлов, принимают как объекты байтов, так и строковые объекты и возвращают объект того же типа, если возвращается путь или имя файла.
- В VxWorks не поддерживаются os.fork, os.execv и os.spawn*p*.
Примечание
Все функции в этом модуле генерируют OSError (или подклассы) в случае некорректных или недоступных имен файлов и путей, или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.
-
exception os.error -
Псевдоним встроенного исключения
OSError.
-
os.name -
Имя модуля, зависящего от операционной системы, импортированного. В настоящее время зарегистрированы следующие имена:
'posix','nt','java'.См. также
sys.platformимеет более тонкую гранулярность.os.uname()предоставляет информацию о версии, зависящую от системы.Модуль
platformобеспечивает подробную проверку идентификации системы.
Имена файлов, аргументы командной строки и переменные среды
В Python имена файлов, аргументы командной строки и переменные среды представлены с помощью типа строка. В некоторых системах необходимо декодировать эти строки в байты и обратно, прежде чем передавать их операционной системе. Python использует кодировку файловой системы для выполнения этой конверсии (см. sys.getfilesystemencoding()).
Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует обработчик ошибок кодирования surrogateescape, что означает, что неразрешимые байты заменяются символом Юникода U+DCxx при декодировании, а эти символы снова преобразуются в исходный байт при кодировании.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не предоставляет этой гарантии, функции API могут генерировать UnicodeErrors.
Параметры процесса
Эти функции и элементы данных предоставляют информацию и выполняют операции с текущим процессом и пользователем.
-
os.ctermid() -
Возвращает имя файла, соответствующее контролирующему терминалу процесса.
Доступность: Unix.
-
os.environ -
Объект отображения, где ключи и значения — строки, представляющие среду процесса. Например,
environ['HOME']— это путь к вашему домашнему каталогу (на некоторых платформах), и эквивалентенgetenv("HOME")в C.Это отображение фиксируется при первом импорте модуля
os, обычно во время запуска Python в рамках обработкиsite.py. Изменения в среде, внесенные после этого момента, не отражаются вos.environ, за исключением изменений, внесённых путём непосредственного измененияos.environ.Это отображение можно использовать для изменения среды, а также для запроса информации о ней.
putenv()будет вызван автоматически при изменении отображения.В Unix ключи и значения используют
sys.getfilesystemencoding()и'surrogateescape'обработчик ошибок. Используйтеenvironb, если хотите использовать другое кодирование.Примечание
Вызов
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() -
Эти функции описаны в Файлы и каталоги.
-
os.fsencode(filename) -
Кодирует путь filename в кодировку файловой системы с обработчиком ошибок
'surrogateescape'или'strict'в Windows; возвращаетbytesбез изменений.fsdecode()— обратная функция.Добавлена в версии 3.2.
Изменено в версии 3.6: Добавлена поддержка объектов, реализующих интерфейс
os.PathLike.
-
os.fsdecode(filename) -
Декодирует путь filename из кодировки файловой системы с обработчиком ошибок
'surrogateescape'или'strict'в Windows; возвращает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, default и результат — str. Обратите внимание, что поскольку
getenv()используетos.environ, отображениеgetenv()аналогичным образом фиксируется при импорте, и функция может не отражать будущих изменений среды.В Unix ключи и значения декодируются с помощью
sys.getfilesystemencoding()и'surrogateescape'обработчика ошибок. Используйтеos.getenvb(), если хотите использовать другое кодирование.Доступность: большинство вариантов Unix, Windows.
-
os.getenvb(key, default=None) -
Возвращает значение переменной среды key, если она существует, или default, если нет. key, default и результат являются байтами. Обратите внимание, что поскольку
getenvb()используетos.environb, отображениеgetenvb()также сохраняется при импорте, и функция может не отражать будущие изменения среды.getenvb()доступна только еслиsupports_bytes_environTrue.Доступность: большинство вариантов Unix.
Впервые добавлена в версии 3.2.
-
os.get_exec_path(env=None) -
Возвращает список каталогов, которые будут проверяться на наличие исполняемого файла с заданным именем, подобно оболочке, при запуске процесса. env, если указано, должен быть словарем переменных окружения для поиска PATH. По умолчанию, когда env
None, используетсяenviron.Впервые добавлена в версии 3.2.
-
os.getegid() -
Возвращает эффективную группу идентификаторов текущего процесса. Это соответствует биту «установка id» в файле, выполняемом в текущем процессе.
Доступность: Unix.
-
os.geteuid() -
Возвращает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.getgid() -
Возвращает реальный идентификатор группы текущего процесса.
Доступность: Unix.
-
os.getgrouplist(user, group) -
Возвращает список идентификаторов групп, к которым принадлежит user. Если group не в списке, он включается; как правило, group указывается как поле идентификатора группы из записи пароля для user, потому что этот идентификатор группы в противном случае может быть потенциально опущен.
Доступность: Unix.
Впервые добавлена в версии 3.3.
-
os.getgroups() -
Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.
Доступность: Unix.
Примечание
В macOS поведение
getgroups()несколько отличается от других платформ Unix. Если интерпретатор Python был построен с целевым уровнем развертывания10.5или более ранним,getgroups()возвращает список эффективных идентификаторов групп, связанных с текущим пользователем; этот список ограничен определенным количеством записей системы, обычно 16, и может быть изменен вызовамиsetgroups(), если они достаточно привилегированы. Если построен с целевым уровнем развертывания, превышающим10.5,getgroups()возвращает текущий список доступа к группам для пользователя, связанного с эффективным идентификатором пользователя процесса; список доступа к группам может изменяться в течение времени жизни процесса, он не зависит от вызововsetgroups(), и его длина не ограничена 16. Значение целевого уровня развертывания,MACOSX_DEPLOYMENT_TARGET, можно получить с помощьюsysconfig.get_config_var().
-
os.getlogin() -
Возвращает имя пользователя, вошедшего в систему на контролирующем терминале процесса. Для большинства целей более полезно использовать
getpass.getuser(), поскольку последний проверяет переменные средыLOGNAMEилиUSERNAME, чтобы узнать, кто это пользователь, и возвращается кpwd.getpwuid(os.getuid())[0], чтобы получить имя пользователя текущего реального идентификатора пользователя.Доступность: Unix, Windows.
-
os.getpgid(pid) -
Возвращает идентификатор группы процессов процесса с идентификатором процесса pid. Если pid равно 0, возвращается идентификатор группы процессов текущего процесса.
Доступность: Unix.
-
os.getpgrp() -
Возвращает идентификатор текущей группы процессов.
Доступность: Unix.
-
os.getpid() -
Возвращает текущий идентификатор процесса.
-
os.getppid() -
Возвращает идентификатор родительского процесса. Когда родительский процесс завершается, в Unix возвращаемый id — это id процесса init (1), в Windows — это тот же id, который может быть повторно использован другим процессом.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
-
os.getpriority(which, who) -
Получить приоритет планирования программы. Значение which — одно из
PRIO_PROCESS,PRIO_PGRPилиPRIO_USER, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS, идентификатор группы процессов дляPRIO_PGRPи идентификатор пользователя дляPRIO_USER). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.Доступность: Unix.
Впервые добавлена в версии 3.3.
-
os.PRIO_PROCESS -
os.PRIO_PGRP -
os.PRIO_USER -
Параметры функций
getpriority()иsetpriority().Доступность: Unix.
Впервые добавлена в версии 3.3.
-
os.getresuid() -
Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохранённый идентификаторы пользователей текущего процесса.
Доступность: Unix.
Впервые добавлена в версии 3.2.
-
os.getresgid() -
Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохранённый идентификаторы групп текущего процесса.
Доступность: Unix.
Впервые добавлена в версии 3.2.
-
os.getuid() -
Возвращает реальный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.initgroups(username, gid) -
Вызов системной функции initgroups() для инициализации списка доступа к группам всеми группами, к которым указанный имя пользователя принадлежит, плюс указанный идентификатор группы.
Доступность: Unix.
Впервые добавлена в версии 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.
-
os.seteuid(euid) -
Устанавливает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.setgid(gid) -
Устанавливает идентификатор группы текущего процесса.
Доступность: Unix.
-
os.setgroups(groups) -
Устанавливает список дополнительных идентификаторов групп, связанных с текущим процессом, на groups. groups должен быть последовательностью, а каждый элемент должен быть целым числом, определяющим группу. Операция обычно доступна только суперпользователю.
Доступность: Unix.
Примечание
В macOS длина groups не может превышать максимально допустимое количество эффективных идентификаторов групп, обычно 16. Обратитесь к документации для
getgroups()для случаев, когда она может не возвращать тот же список групп, установленный вызовом setgroups().
-
os.setpgrp() -
Вызывает системный вызов
setpgrp()илиsetpgrp(0, 0)в зависимости от реализованной версии (если таковая имеется). См. руководство по Unix для семантики.Доступность: Unix.
-
os.setpgid(pid, pgrp) -
Вызывает системный вызов
setpgid()для установки идентификатора группы процессов для процесса с id pid в группу процессов с id pgrp. См. руководство по Unix для семантики.Доступность: Unix.
-
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.
Добавлена в версии 3.3.
-
os.setregid(rgid, egid) -
Устанавливает реальный и эффективный идентификаторы группы текущего процесса.
Доступность: Unix.
-
os.setresgid(rgid, egid, sgid) -
Устанавливает реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix.
Добавлена в версии 3.2.
-
os.setresuid(ruid, euid, suid) -
Устанавливает реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix.
Добавлена в версии 3.2.
-
os.setreuid(ruid, euid) -
Устанавливает реальный и эффективный идентификаторы пользователя текущего процесса.
Доступность: Unix.
-
os.getsid(pid) -
Вызывает системный вызов
getsid(). См. руководство по Unix для семантики.Доступность: Unix.
-
os.setsid() -
Вызывает системный вызов
setsid(). См. руководство по Unix для семантики.Доступность: Unix.
-
os.setuid(uid) -
Устанавливает идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.strerror(code) -
Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где
strerror()возвращаетNULLпри указании неизвестного номера ошибки, поднимаетсяValueError.
-
os.supports_bytes_environ -
Trueесли родной тип среды ОС — байты (например,Falseв Windows).Добавлена в версии 3.2.
-
os.umask(mask) -
Устанавливает текущую числовую маску umask и возвращает предыдущую маску.
-
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.
Создание объектов файлов
Эти функции создают новые объекты файлов. (См. также open() для открытия дескрипторов файлов.)
Операции с дескрипторами файлов
Эти функции работают со потоками ввода-вывода, к которым обращаются с помощью дескрипторов файлов.
Дескрипторы файлов — это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет дескриптор файла 0, стандартный вывод — 1, а стандартная ошибка — 2. Файлы, открытые процессом далее, получат номера 3, 4, 5 и так далее. Название «дескриптор файла» несколько обманчиво; на платформах Unix сокеты и каналы также указываются дескрипторами файлов.
Метод fileno() может использоваться для получения дескриптора файла, связанного с объектом файла, если это необходимо. Обратите внимание, что использование дескриптора файла напрямую обойдёт методы объекта файла, игнорируя такие аспекты, как внутреннее буферизация данных.
-
os.close(fd) -
Закрыть дескриптор файла fd.
Примечание
Эта функция предназначена для работы с низкоуровневым вводом-выводом и должна применяться к дескриптору файла, возвращаемому функцией
os.open()илиpipe(). Чтобы закрыть «объект файла», возвращаемый встроенной функциейopen()или функциямиpopen()илиfdopen(), используйте его методclose().
-
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.
-
os.dup(fd) -
Возвращает дубликат дескриптора файла fd. Новый дескриптор файла является ненаследуемым.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый дескриптор файла является наследуемым.
Изменено в версии 3.4: Новый дескриптор файла теперь ненаследуемый.
-
os.dup2(fd, fd2, inheritable=True) -
Дублирует дескриптор файла fd в fd2, предварительно закрывая последний, если необходимо. Возвращает fd2. Новый дескриптор файла является наследуемым по умолчанию или ненаследуемым, если inheritable равно
False.Изменено в версии 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.
-
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.
-
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, это эквивалентноos.statvfs(fd).Доступность: Unix.
-
os.fsync(fd) -
Принудительная запись файла с файловым дескриптором fd на диск. В Unix это вызывает собственную функцию
fsync(); в Windows — функцию MS_commit().Если вы начинаете с буферизованного объекта файла Python объекта файла 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.
Введено в версии 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.lseek(fd, pos, how) -
Установить текущую позицию дескриптора файла fd на позицию pos, изменённую параметром how:
SEEK_SETили0для установки позиции относительно начала файла;SEEK_CURили1для установки относительно текущей позиции;SEEK_ENDили2для установки относительно конца файла. Возвращает новую позицию курсора в байтах, начиная с начала.
-
os.SEEK_SET -
os.SEEK_CUR -
os.SEEK_END -
Параметры функции
lseek(). Их значения соответственно 0, 1 и 2.Введено в версии 3.3: Некоторые операционные системы могут поддерживать дополнительные значения, такие как
os.SEEK_HOLEилиos.SEEK_DATA.
-
os.open(path, flags, mode=0o777, *, dir_fd=None) -
Открыть файл path и установить различные флаги в соответствии с flags и, возможно, режим в соответствии с mode. При вычислении mode сначала вычитается текущее значение маски umask. Возвращает дескриптор файла для вновь открытого файла. Новый дескриптор файла не наследуется.
Описание значений флагов и режимов см. в документации C-runtime; константы флагов (например,
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(). Их можно объединять с помощью побитового оператора OR |. Некоторые из них недоступны на всех платформах. Для описания их доступности и использования обратитесь к справочной странице 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_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.
Изменено в версии 3.4: Новые дескрипторы файлов теперь непередаваемые.
-
os.pipe() -
Создаёт канал. Возвращает пару дескрипторов файлов
(r, w)используемых для чтения и записи соответственно. Новый дескриптор файла является непередаваемым.Доступность: Unix, Windows.
Изменено в версии 3.4: Новые дескрипторы файлов теперь непередаваемые.
-
os.pipe2(flags) -
Создаёт канал с установленными атомарно флагами flags. Флаги можно комбинировать, используя побитовое ИЛИ одного или нескольких значений:
O_NONBLOCK,O_CLOEXEC. Возвращает пару дескрипторов файлов(r, w)используемых для чтения и записи соответственно.Доступность: некоторые разновидности Unix.
Новое в версии 3.3.
-
os.posix_fallocate(fd, offset, len) -
Обеспечивает выделение достаточного места на диске для файла, указанного fd, начиная с offset и продолжая на len байт.
Доступность: Unix.
Новое в версии 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.7 или более поздних версий.
Введено в версии 3.7.
-
os.RWF_DSYNC -
Обеспечивает эквивалент флага
O_DSYNCopen(2)для каждой записи. Эффект этого флага применяется только к диапазону данных, записанных системным вызовом.Доступность: Linux 4.7 и более поздних версий.
Введено в версии 3.7.
-
os.RWF_SYNC -
Обеспечивает эквивалент флага
O_SYNCopen(2)для каждой записи. Эффект этого флага применяется только к диапазону данных, записанных системным вызовом.Доступность: Linux 4.7 и более поздних версий.
Введено в версии 3.7.
-
os.read(fd, n) -
Прочитать не более n байтов из дескриптора файла fd.
Возвращает строку байтов, содержащую прочитанные байты. Если достигнут конец файла, соответствующего fd, возвращается пустой объект bytes.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, как возвращаемому
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, начиная со смещения offset. Возвращает количество отправленных байтов. При достижении EOF возвращает
0.Первая форма записи поддерживается всеми платформами, которые определяют
sendfile().В Linux, если offset задан как
None, байты считываются из текущей позиции in_fd, а позиция in_fd обновляется.Второй случай может быть использован в macOS и FreeBSD, где headers и trailers — это произвольные последовательности буферов, которые записываются до и после данных из in_fd. Он возвращает то же самое, что и первый случай.
В macOS и FreeBSD значение
0для count указывает на отправку до достижения конца in_fd.Все платформы поддерживают сокеты в качестве дескриптора файла out_fd, а некоторые платформы также допускают другие типы (например, обычный файл, пайп).
Приложения, работающие в кросс-платформенной среде, не должны использовать аргументы headers, trailers и flags.
Доступность: Unix.
Примечание
Для более высокого уровня обёртки
sendfile()см.socket.socket.sendfile().Введено в версии 3.3.
Изменено в версии 3.9: Параметры out и in были переименованы в out_fd и in_fd.
-
os.set_blocking(fd, blocking) -
Установить режим блокировки для указанного дескриптора файла. Установить флаг
O_NONBLOCK, если блокировкаFalse, иначе очистить флаг.См. также
get_blocking()иsocket.socket.setblocking().Доступность: Unix.
Введено в версии 3.5.
-
os.SF_NODISKIO -
os.SF_MNOWAIT -
os.SF_SYNC -
Параметры функции
sendfile(), если их поддерживает реализация.Доступность: Unix.
Введено в версии 3.3.
-
os.readv(fd, buffers) -
Прочитать из дескриптора файла fd в несколько изменяемых объектов-последовательностей байтов buffers. Передавать данные в каждый буфер до заполнения, а затем переходить к следующему буферу в последовательности, чтобы сохранить остальную часть данных.
Возвращает общее количество фактически прочитанных байтов, которое может быть меньше общей ёмкости всех объектов.
Операционная система может установить ограничение (
sysconf()значение'SC_IOV_MAX') на количество используемых буферов.Доступность: Unix.
Введено в версии 3.3.
-
os.tcgetpgrp(fd) -
Возвращает группу процессов, связанную с терминалом, заданным fd (открытым дескриптором файла, как возвращаемым
os.open()).Доступность: Unix.
-
os.tcsetpgrp(fd, pg) -
Установить группу процессов, связанную с терминалом, заданным fd (открытым дескриптором файла, как возвращаемым
os.open()) на pg.Доступность: Unix.
-
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.
Получение размера терминала
Введено в версии 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.
-
class os.terminal_size -
Подкласс кортежа, содержащий
(columns, lines)размер окна терминала.-
columns -
Ширина окна терминала в символах.
-
lines -
Высота окна терминала в символах.
-
Наследование дескрипторов файлов
Введено в версии 3.4.
Дескриптор файла имеет флаг «наследуемый», который указывает, может ли дескриптор файла быть унаследован дочерними процессами. С Python 3.4 дескрипторы файлов, созданные Python, по умолчанию не наследуются.
В UNIX, не наследуемые дескрипторы файлов закрываются в дочерних процессах при выполнении новой программы, другие дескрипторы файлов наследуются.
В Windows, не наследуемые дескрипторы и дескрипторы файлов закрываются в дочерних процессах, за исключением стандартных потоков (дескрипторы 0, 1 и 2: stdin, stdout и stderr), которые всегда наследуются. Используя функции spawn*, все наследуемые дескрипторы и все наследуемые дескрипторы файлов наследуются. Используя модуль subprocess, все дескрипторы файлов, кроме стандартных потоков, закрываются, а наследуемые дескрипторы наследуются только если параметр close_fds имеет значение False.
-
os.get_inheritable(fd) -
Получение флага «наследуемый» указанного дескриптора файла (булевое значение).
-
os.set_inheritable(fd, inheritable) -
Установка флага «наследуемый» указанного дескриптора файла.
-
os.get_handle_inheritable(handle) -
Получение флага «наследуемый» указанного дескриптора (булевое значение).
Доступность: Windows.
-
os.set_handle_inheritable(handle, inheritable) -
Установка флага «наследуемый» указанного дескриптора.
Доступность: Windows.
Файлы и каталоги
На некоторых платформах 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, если нет. Смотрите страницу справки 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):stat.UF_NODUMPstat.UF_IMMUTABLEstat.UF_APPENDstat.UF_OPAQUEstat.UF_NOUNLINKstat.UF_COMPRESSEDstat.UF_HIDDENstat.SF_ARCHIVEDstat.SF_IMMUTABLEstat.SF_APPENDstat.SF_NOUNLINKstat.SF_SNAPSHOT
Эта функция может поддерживать не следование символичным ссылкам.
Вызывает событие аудита
os.chflagsс аргументамиpath,flags.Доступность: Unix.
Новое в версии 3.3: Аргумент follow_symlinks.
Изменено в версии 3.6: Принимает объект-путь.
-
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) -
Изменить режим path на числовое значение mode. mode может принимать одно из следующих значений (как определено в модуле
stat) или побитовое ИЛИ их комбинаций:stat.S_ISUIDstat.S_ISGIDstat.S_ENFMTstat.S_ISVTXstat.S_IREADstat.S_IWRITEstat.S_IEXECstat.S_IRWXUstat.S_IRUSRstat.S_IWUSRstat.S_IXUSRstat.S_IRWXGstat.S_IRGRPstat.S_IWGRPstat.S_IXGRPstat.S_IRWXOstat.S_IROTHstat.S_IWOTHstat.S_IXOTH
Эта функция может поддерживать указание дескриптора файла, пути, относительные к дескрипторам каталогов и не следование символичным ссылкам.
Примечание
Хотя Windows поддерживает
chmod(), вы можете установить только флаг только для чтения файла с ним (через константыstat.S_IWRITEиstat.S_IREADили соответствующее целое значение). Все остальные биты игнорируются.Вызывает событие аудита
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.
Новое в версии 3.3: Добавлена поддержка указания path как открытого дескриптора файла, а также аргументов dir_fd и follow_symlinks.
Изменено в версии 3.6: Поддерживает объект-путь.
-
os.chroot(path) -
Изменить корневой каталог текущего процесса на path.
Доступность: Unix.
Изменено в версии 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.
Изменено в версии 3.6: Принимает объект-путь.
-
os.lchmod(path, mode) -
Изменить режим path на числовой mode. Если path — символическая ссылка, это повлияет на символическую ссылку, а не на целевой объект. См. документацию по
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(path, mode, follow_symlinks=False).Вызывает событие аудита
os.chmodс аргументамиpath,mode,dir_fd.Доступность: Unix.
Изменено в версии 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.
Изменено в версии 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 теперь открываются точки переназначения, представляющие другой путь (заменители имён), включая символические ссылки и узлы каталогов. Другие типы точек переназначения обрабатываются операционной системой так же, как для
stat().
-
os.mkdir(path, mode=0o777, *, dir_fd=None) -
Создать каталог с именем path и числовым режимом mode.
Если каталог уже существует, генерируется исключение
FileExistsError. Если родительский каталог в пути не существует, генерируется исключениеFileNotFoundError.В некоторых системах mode игнорируется. В тех системах, где используется, сначала применяется текущее значение маски umask. Если установлены биты, отличные от последних 9 (т.е. последние 3 цифры восьмеричного представления mode), их значение зависит от платформы. На некоторых платформах они игнорируются, и следует явно вызвать
chmod()для их установки.Эта функция также может поддерживать пути, относящиеся к дескрипторам каталогов.
Также возможно создание временных каталогов; см. модуль
tempfileи функциюtempfile.mkdtemp().Вызывает событие аудита
os.mkdirс аргументамиpath,mode,dir_fd.Новое в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает объект-путь.
-
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.
Введено в версии 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.
Введено в версии 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 является объектом байтов (прямо или косвенно), результат будет объектом байтов.Эта функция также может поддерживать пути, относящиеся к дескрипторам каталогов.
При попытке разрешить путь, который может содержать ссылки, используйте
realpath()для правильной обработки рекурсии и различий платформ.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Введено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает объект пути на Unix.
Изменено в версии 3.8: Принимает объект пути и объект байтов в Windows.
Изменено в версии 3.8: Добавлена поддержка соединений каталогов, и изменено на возвращение пути подстановки (который обычно включает префикс
\\?\), а не дополнительного поля «печатного имени», которое ранее возвращалось.
-
os.remove(path, *, dir_fd=None) -
Удалить (стереть) файл path. Если path — это каталог, генерируется исключение
IsADirectoryError. Для удаления каталогов используйте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.В 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()для отображения всех файлов (исключая каталоги) в заданном path, не начинающихся с'.'. Вызов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 -
Базовое имя файла записи, относительно аргумента path функции
scandir().Атрибут
nameбудетbytes, если аргумент path функцииscandir()имеет типbytes, иstrв противном случае. Используйте функциюfsdecode()для декодирования имен файлов в формате байтов.
-
path -
Полное имя пути записи: эквивалентно
os.path.join(scandir_path, entry.name), где scandir_path — аргумент path функцииscandir(). Путь является абсолютным только если аргумент path функцииscandir()был абсолютным. Если аргумент path функцииscandir()был дескриптором файла, атрибутpathсовпадает с атрибутомname.Атрибут
pathбудетbytes, если аргумент path функцииscandir()имеет тип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для этой записи. Этот метод по умолчанию следует по символическим ссылкам; чтобы получить информацию о символической ссылке, добавьте аргументfollow_symlinks=False.На Unix этот метод всегда требует системного вызова. На Windows он требует системного вызова только если follow_symlinks равно
Trueи запись является точкой переназначения (например, символической ссылкой или соединением каталогов).На Windows атрибуты
stat_result,st_ino,st_devиst_nlinkвсегда равны нулю. Вызовите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.Эта функция обычно следует за символическими ссылками; чтобы получить состояние символической ссылки, добавьте аргумент
follow_symlinks=False, или используйтеlstat().Эта функция может поддерживать указание дескриптора файла и не следовать символическим ссылкам.
В Windows, передача
follow_symlinks=Falseотключит следование всем переименованиям имен-заместителей, что включает символические ссылки и соединения каталогов. Другие типы переименований, которые не напоминают ссылки или которые операционная система не может отследить, будут открыты напрямую. При слежении за цепочкой нескольких ссылок это может привести к возвращению исходной ссылки вместо ссылки, которая помешала полному прохождению. Чтобы получить результаты состояния для конечного пути в этом случае, используйте функциюos.path.realpath()для разрешения имени пути как можно дальше и вызовитеlstat()на результате. Это не относится к висячим символическим ссылкам или узловым точкам, которые будут поднимать обычные исключения.Пример:
>>> 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отключает следование всем переименованиям имен-заместителей. Если операционная система достигает переименования, которое она не может отследить, 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 -
Время последнего доступа, выраженное в наносекундах как целое число.
-
st_mtime_ns -
Время последнего изменения содержимого, выраженное в наносекундах как целое число.
-
st_ctime_ns -
Зависит от платформы:
- время последнего изменения метаданных в Unix,
- время создания в Windows, выраженное в наносекундах как целое число.
Примечание
Точный смысл и разрешение атрибутов
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, когда файл содержит пробелы.
-
st_blksize -
«Предпочитаемый» размер блока для эффективного ввода-вывода файловой системы. Запись в файл меньшими частями может привести к неэффективному чтению-модификации-перезаписи.
-
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.
-
st_reparse_tag -
Когда у
st_file_attributesустановлен флагFILE_ATTRIBUTE_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.3: Добавлены члены
st_atime_ns,st_mtime_nsиst_ctime_ns. -
Новое в версии 3.5: Добавлен член
st_file_attributesв Windows.Изменено в версии 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.
Изменено в версии 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, оно должно быть кортежем из 2 элементов вида
(atime_ns, mtime_ns), где каждый элемент — целое число, представляющее наносекунды. - Если times не
None, оно должно быть кортежем из 2 элементов вида(atime, mtime), где каждый элемент — целое число или число с плавающей точкой, представляющее секунды. - Если 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: Принимает объект, подобный пути.
- Если указано ns, оно должно быть кортежем из 2 элементов вида
-
os.walk(top, topdown=True, onerror=None, followlinks=False) -
Генерирует имена файлов в дереве каталогов, проходя по дереву сверху вниз или снизу вверх. Для каждого каталога в дереве, укоренённом в каталоге top (включая сам top), возвращает кортеж из 3 элементов
(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') # don't visit CVS directoriesВ следующем примере (простая реализация
shutil.rmtree()), проход по дереву снизу вверх является необходимым, так какrmdir()не позволяет удалить каталог до тех пор, пока он не будет пустым:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. 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.Эта функция всегда поддерживает пути, относительные к дескрипторам каталогов и не следование за символическими ссылками. Однако обратите внимание, что, в отличие от других функций, значение по умолчанию для follow_symlinks в
fwalk()—False.Примечание
Так как
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') # don't visit CVS directoriesВ следующем примере проход по дереву снизу вверх необходим:
rmdir()не позволяет удалить каталог, пока он не будет пустым:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. 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.
Расширенные атрибуты Linux
Введено в версии 3.3.
Эти функции доступны только в Linux.
-
os.getxattr(path, attribute, *, follow_symlinks=True) -
Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть байтами или строкой (непосредственно или косвенно через интерфейс
PathLike). Если это строка, она кодируется с использованием кодировки файловой системы.Эта функция может поддерживать указание дескриптора файла и не следование символичным ссылкам.
Вызывает событие аудита аудита
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 должен быть байтами или строкой (непосредственно или косвенно через интерфейс
PathLike). Если это строка, она кодируется с использованием кодировки файловой системы.Эта функция может поддерживать указание дескриптора файла и не следование символичным ссылкам.
Вызывает событие аудита аудита
os.removexattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
-
os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True) -
Устанавливает расширенный атрибут файловой системы attribute для path со значением value. attribute должен быть байтами или строкой без вложенных нулей (непосредственно или косвенно через интерфейс
PathLike). Если это строка, она кодируется с использованием кодировки файловой системы. 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 -
Максимальный размер значения расширенного атрибута. В настоящее время это 64 КБ в Linux.
-
os.XATTR_CREATE -
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна создать атрибут.
-
os.XATTR_REPLACE -
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна заменить существующий атрибут.
Управление процессами
Эти функции могут использоваться для создания и управления процессами.
Различные функции 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.Для получения дополнительной информации о загрузке DLL см. документацию Microsoft.
Возбуждает событие аудита
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*.Варианты функций
exec*с “l” и “v” отличаются тем, как передаются аргументы командной строки. Варианты с “l” может быть проще использовать, если количество параметров фиксировано во время написания кода; отдельные параметры просто становятся дополнительными параметрами для функцийexecl*(). Варианты с “v” хороши, когда количество параметров переменное, а аргументы передаются в списке или кортеже в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не проверяется.Варианты, включающие «p» в конце (
execlp(),execlpe(),execvp()иexecvpe()) будут использовать переменную окруженияPATHдля поиска файла программы file. Когда окружение заменяется (с использованием одного из вариантов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.
Новое в версии 3.3: Добавлена поддержка указания path в качестве открытого дескриптора файла для
execve().Изменено в версии 3.6: Принимает объект типа путь.
-
os._exit(n) -
Завершает процесс со статусом n, не вызывая обработчики очистки, не сбрасывая буферы stdio и т. д.
Ниже определены коды выхода, которые могут использоваться с _exit(), хотя они и не являются обязательными. Обычно они используются для системных программ, написанных на Python, таких как программа доставки внешних команд почтового сервера.
Примечание
Некоторые из них могут быть недоступны на всех платформах Unix, так как есть некоторые отличия. Эти константы определяются в зависимости от платформы.
-
os.EX_OK -
Код выхода, означающий, что ошибка не произошла.
Доступность: Unix.
-
os.EX_USAGE -
Код выхода, означающий, что команда использована неправильно, например, при указании неверного количества аргументов.
Доступность: Unix.
-
os.EX_DATAERR -
Код выхода, означающий, что входные данные были некорректными.
Доступность: Unix.
-
os.EX_NOINPUT -
Код выхода, означающий, что входной файл не существовал или был недоступен для чтения.
Доступность: Unix.
-
os.EX_NOUSER -
Код выхода, означающий, что указанный пользователь не существует.
Доступность: Unix.
-
os.EX_NOHOST -
Код выхода, означающий, что указанный хост не существует.
Доступность: Unix.
-
os.EX_UNAVAILABLE -
Код выхода, означающий, что необходимая служба недоступна.
Доступность: Unix.
-
os.EX_SOFTWARE -
Код выхода, означающий, что обнаружена внутренняя ошибка программного обеспечения.
Доступность: Unix.
-
os.EX_OSERR -
Код выхода, означающий, что обнаружена ошибка операционной системы, например, невозможность выполнить fork или создать канал.
Доступность: Unix.
-
os.EX_OSFILE -
Код выхода, означающий, что какой-то системный файл не существует, не может быть открыт или имеет другой вид ошибки.
Доступность: Unix.
-
os.EX_CANTCREAT -
Код выхода, означающий, что указанный пользователем выходной файл не смог быть создан.
Доступность: Unix.
-
os.EX_IOERR -
Код выхода, означающий, что при выполнении операций ввода-вывода с файлом произошла ошибка.
Доступность: Unix.
-
os.EX_TEMPFAIL -
Код выхода, означающий временный сбой. Это указывает на то, что что-то может не быть ошибкой, например, сетевое соединение, которое не удалось установить во время повторной операции.
Доступность: Unix.
-
os.EX_PROTOCOL -
Код выхода, означающий, что обмен протоколом был незаконным, недействительным или не понят.
Доступность: Unix.
-
os.EX_NOPERM -
Код выхода, означающий, что для выполнения операции недостаточно разрешений (но не предназначен для проблем с файловой системой).
Доступность: Unix.
-
os.EX_CONFIG -
Код выхода, означающий, что произошла какая-то ошибка конфигурации.
Доступность: Unix.
-
os.EX_NOTFOUND -
Код выхода, означающий, что что-то типа «запись не найдена».
Доступность: Unix.
-
os.fork() -
Создать дочерний процесс. Возвращает
0в дочернем процессе и идентификатор процесса дочернего процесса в родительском процессе. При возникновении ошибки поднимаетсяOSError.Обратите внимание, что на некоторых платформах, включая FreeBSD <= 6.3 и Cygwin, существуют известные проблемы при использовании
fork()из потока.Вызывает событие аудита аудита
os.forkбез аргументов.Изменено в версии 3.8: Вызов
fork()в дочернем интерпретаторе больше не поддерживается (RuntimeErrorподнимается).Предупреждение
См.
sslдля приложений, использующих модуль SSL с fork().Доступность: Unix.
-
os.forkpty() -
Создать дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару
(pid, fd), где pid — это0в дочернем процессе, новый идентификатор процесса дочернего процесса в родительском процессе, а fd — это дескриптор файла главного конца псевдотерминала. Для более портативного подхода используйте модульpty. Если произошла ошибка, поднимаетсяOSError.Вызывает событие аудита аудита
os.forkptyбез аргументов.Изменено в версии 3.8: Вызов
forkpty()в дочернем интерпретаторе больше не поддерживается (RuntimeErrorподнимается).Доступность: некоторые варианты Unix.
-
os.kill(pid, sig) -
Отправить сигнал sig процессу pid. Константные значения для конкретных сигналов, доступных на платформе хоста, определены в модуле
signal.Windows: Сигналы
signal.CTRL_C_EVENTиsignal.CTRL_BREAK_EVENTявляются специальными сигналами, которые могут быть отправлены только в консольные процессы, которые разделяют общее окно консоли, например, некоторые дочерние процессы. Любое другое значение sig приведет к безусловному завершению процесса с помощью API TerminateProcess, а код выхода будет установлен в sig. Windows-версияkill()также принимает дескрипторы процессов, которые нужно завершить.См. также
signal.pthread_kill().Вызывает событие аудита аудита
os.killс аргументамиpid,sig.Добавлено в версии 3.2: Поддержка Windows.
-
os.killpg(pgid, sig) -
Отправить сигнал sig группе процессов pgid.
Вызывает событие аудита аудита
os.killpgс аргументамиpgid,sig.Доступность: Unix.
-
os.nice(increment) -
Добавить increment к «вежливости» процесса. Возвращает новую вежливость.
Доступность: Unix.
-
os.pidfd_open(pid, flags=0) -
Возвращает дескриптор файла, ссылающийся на процесс pid. Этот дескриптор можно использовать для управления процессами без гонок и сигналов. Аргумент flags предоставляется для будущих расширений; в настоящее время значения флагов не определены.
См. страницу справки pidfd_open(2) для получения дополнительной информации.
Доступность: Linux 5.3+
Добавлено в версии 3.9.
-
os.plock(op) -
Закрепить сегменты программы в памяти. Значение op (определенное в
<sys/lock.h>) определяет, какие сегменты будут зафиксированы.Доступность: Unix.
-
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; см. документацию по этому классу для более мощных способов управления и взаимодействия с дочерними процессами.
-
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 не задано, дочерний процесс унаследует идентификатор группы процессов родительского процесса. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETPGROUP.Если аргумент resetids равен
True, он сбросит эффективные идентификаторы пользователя и группы дочернего процесса до реальных идентификаторов пользователя и группы родительского процесса. Если аргумент равенFalse, дочерний процесс сохраняет эффективные идентификаторы пользователя и группы родителя. В любом случае, если биты разрешения на установку идентификатора пользователя и идентификатора группы установлены в файле исполняемого файла, их действие переопределит установку эффективных идентификаторов пользователя и группы. Этот аргумент соответствует флагу библиотеки CPOSIX_SPAWN_RESETIDS.Если аргумент setsid равен
True, он создаст новый идентификатор сессии дляposix_spawn. setsid требует флаговPOSIX_SPAWN_SETSIDилиPOSIX_SPAWN_SETSID_NP. В противном случае возбуждаетсяNotImplementedError.Аргумент setsigmask установит маску сигнала на указанный набор сигналов. Если параметр не используется, дочерний процесс наследует маску сигналов родителя. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETSIGMASK.Аргумент sigdef сбросит обработку всех сигналов в указанном наборе. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETSIGDEF.Аргумент scheduler должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр
sched_paramс параметрами планировщика. ЗначениеNoneвместо политики планировщика указывает, что она не предоставляется. Этот аргумент является комбинацией флагов библиотеки CPOSIX_SPAWN_SETSCHEDPARAMиPOSIX_SPAWN_SETSCHEDULER.Возбуждает событие аудита аудита
os.posix_spawnс аргументамиpath,argv,env.Введено в версии 3.8.
Доступность: Unix.
-
-
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_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.
Введено в версии 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.Варианты функций
spawn*с «l» и «v» различаются по способу передачи аргументов командной строки. Варианты с «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.
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]) -
Запустить файл с помощью связанного приложения.
Если параметр operation не указан или
'open', это эквивалентно двойному щелчку по файлу в проводнике Windows или передаче имени файла в качестве аргумента команде start в интерактивной командной оболочке: файл будет открыт при помощи приложения (если таковое есть), связанного с его расширением.Если параметр operation задан, он должен быть «командным глаголом», определяющим, что нужно сделать с файлом. Общие глаголы, документированные Microsoft, это
'print'и'edit'(для файлов), а также'explore'и'find'(для каталогов).startfile()возвращает результат сразу после запуска связанного приложения. Нет возможности подождать закрытия приложения или получить его код завершения. Параметр path является относительным к текущему каталогу. Если вы хотите использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'); функция Win32ShellExecute()не работает, если она есть. Используйте функциюos.path.normpath()для обеспечения правильного кодирования пути для Win32.Для снижения накладных расходов при запуске интерпретатора, функция Win32
ShellExecute()не разрешается до первого вызова этой функции. Если функция не может быть разрешена, будет поднято исключениеNotImplementedError.Возбуждает событие аудита аудита
os.startfileс аргументамиpath,operation.Доступность: Windows.
-
os.system(command) -
Выполняет команду (строка) в дочерней оболочке. Это реализуется путем вызова стандартной C-функции
system(), и имеет те же ограничения. Изменения вsys.stdinи т.д. не отражаются в среде выполняемой команды. Если команда генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет значение возвращаемого значения C-функции, поэтому возвращаемое значение Python-функции зависит от системы.В Unix, возвращаемое значение — это код завершения процесса, закодированный в формате, указанном для
wait().В Windows, возвращаемое значение — это значение, возвращенное оболочкой системы после выполнения команды command. Оболочка задается переменной среды Windows
COMSPEC: обычно это cmd.exe, которая возвращает код завершения запущенной команды; на системах, использующих нестандартную оболочку, ознакомьтесь с документацией вашей оболочки.Модуль
subprocessпредоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее использования этой функции. См. раздел Замена устаревших функций модулем subprocess в документации модуляsubprocessдля полезных рецептов.В Unix,
waitstatus_to_exitcode()может использоваться для преобразования результата (кода завершения) в код выхода. В Windows результат напрямую является кодом выхода.Возбуждает событие аудита аудита
os.systemс аргументомcommand.Доступность: Unix, Windows.
-
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.
waitstatus_to_exitcode()может использоваться для преобразования кода завершения в код выхода.Доступность: Unix.
См. также
waitpid()может использоваться для ожидания завершения конкретного дочернего процесса и имеет больше опций.
-
os.waitid(idtype, id, options) -
Ожидание завершения одного или нескольких дочерних процессов. idtype может быть
P_PID,P_PGID,P_ALLилиP_PIDFDв Linux. id указывает PID, по которому следует ждать. options создается путем побитового объединения одного или нескольких изWEXITED,WSTOPPEDилиWCONTINUEDи дополнительно может быть побитово объединено сWNOHANGилиWNOWAIT. Возвращаемое значение — объект, представляющий данные, содержащиеся в структуреsiginfo_t, а именно:si_pid,si_uid,si_signo,si_status,si_codeилиNone, если указанWNOHANGи нет дочерних процессов в ожидаемом состоянии.Доступность: Unix.
Введено в версии 3.3.
-
os.P_PID -
os.P_PGID -
os.P_ALL -
Возможные значения для idtype в
waitid(). Они влияют на то, как интерпретируется id.Доступность: Unix.
Введено в версии 3.3.
-
os.P_PIDFD -
Это специфичное для Linux значение idtype, указывающее, что id — это дескриптор файла, ссылающийся на процесс.
Доступность: Linux 5.4+
Введено в версии 3.9.
-
os.WEXITED -
os.WSTOPPED -
os.WNOWAIT -
Флаги, которые могут использоваться в options в
waitid(), задающие, какой сигнал дочернего процесса ожидать.Доступность: Unix.
Введено в версии 3.3.
-
os.CLD_EXITED -
os.CLD_KILLED -
os.CLD_DUMPED -
os.CLD_TRAPPED -
os.CLD_STOPPED -
os.CLD_CONTINUED -
Эти значения могут быть возвращены в результате вызова функции
waitid()для поляsi_code.Доступность: Unix.
Новая в версии 3.3.
Изменено в версии 3.9: Добавлены значения
CLD_KILLEDиCLD_STOPPED.
-
os.waitpid(pid, options) -
Детали этой функции отличаются на Unix и Windows.
На Unix: Ожидает завершения дочернего процесса с заданным идентификатором pid и возвращает кортеж, содержащий его идентификатор и код завершения (кодированный так же, как для
wait()). Семантика вызова зависит от значения целочисленного параметра options, которое должно быть0для нормальной работы.Если pid больше
0,waitpid()запрашивает информацию о состоянии указанного процесса. Если pid равно0, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если pid равно-1, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше-1, запрос касается любого процесса в группе процессов-pid(абсолютное значение pid).Исключение
OSErrorс значением errno генерируется, когда системный вызов возвращает -1.На Windows: Ожидает завершения процесса с заданным идентификатором pid, возвращает кортеж, содержащий pid и код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). Значение pid, меньшее или равное
0, не имеет особого значения на Windows и вызывает исключение. Значение целочисленного параметра options не влияет на результат. pid может относиться к любому процессу, идентификатор которого известен, не обязательно к дочернему процессу. Функцииspawn*, вызываемые с параметромP_NOWAIT, возвращают соответствующие дескрипторы процессов.waitstatus_to_exitcode()может быть использована для преобразования кода завершения в код выхода.Изменено в версии 3.5: Если системный вызов прерывается, а обработчик сигнала не генерирует исключение, функция теперь повторно пытается выполнить системный вызов вместо генерации исключения
InterruptedError(см. PEP 475 для объяснения).
-
os.wait3(options) -
Аналогично
waitpid(), за исключением того, что аргумент идентификатора процесса не передается, и возвращается кортеж из 3 элементов: идентификатор дочернего процесса, код завершения и информация об использовании ресурсов. См.resource.getrusage()для получения дополнительной информации об использовании ресурсов. Параметр options такой же, как и уwaitpid()иwait4().waitstatus_to_exitcode()может быть использован для преобразования кода завершения в код выхода.Доступность: Unix.
-
os.wait4(pid, options) -
Аналогично
waitpid(), за исключением того, что возвращается кортеж из 3 элементов: идентификатор дочернего процесса, код завершения и информация об использовании ресурсов. См.resource.getrusage()для получения дополнительной информации об использовании ресурсов. Аргументы функцииwait4()такие же, как и уwaitpid().waitstatus_to_exitcode()может быть использован для преобразования кода завершения в код выхода.Доступность: Unix.
-
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()функции.Новая в версии 3.9.
- Если процесс завершился нормально (если
-
os.WNOHANG -
Опция для
waitpid(), позволяющая функции сразу вернуться, если статус дочернего процесса недоступен немедленно. В этом случае функция возвращает(0, 0).Доступность: Unix.
-
os.WCONTINUED -
Эта опция заставляет дочерние процессы быть отслеженными, если они были возобновлены из состояния остановки управления задачами после последнего отслеживания их статуса.
Доступность: некоторые системы Unix.
-
os.WUNTRACED -
Эта опция заставляет дочерние процессы быть отслеженными, если они были остановлены, но их текущее состояние не было отслежено с момента остановки.
Доступность: Unix.
Следующие функции принимают код состояния процесса, возвращаемый функциями system(), wait() или waitpid() в качестве параметра. Они могут использоваться для определения состояния процесса.
-
os.WCOREDUMP(status) -
Возвращает
Trueесли для процесса был создан дамп ядра, в противном случае возвращаетFalse.Эта функция должна использоваться только если
WIFSIGNALED()истинно.Доступность: Unix.
-
os.WIFCONTINUED(status) -
Возвращает
Trueесли остановленный дочерний процесс был возобновлён передачей сигналаSIGCONT(если процесс был продолжен после остановки управления заданиями), в противном случае возвращаетFalse.См. опцию
WCONTINUED.Доступность: Unix.
-
os.WIFSTOPPED(status) -
Возвращает
Trueесли процесс был остановлен передачей сигнала, в противном случае возвращаетFalse.WIFSTOPPED()возвращаетTrueтолько если вызовwaitpid()был сделан с опциейWUNTRACEDили когда процесс отслеживается (см. ptrace(2)).Доступность: Unix.
-
os.WIFSIGNALED(status) -
Возвращает
Trueесли процесс был завершён сигналом, в противном случае возвращаетFalse.Доступность: Unix.
-
os.WIFEXITED(status) -
Возвращает
Trueесли процесс завершился нормально, то есть, вызвавexit()или_exit(), или вернувшись изmain(); в противном случае возвращаетFalse.Доступность: Unix.
-
os.WEXITSTATUS(status) -
Возвращает код завершения процесса.
Эта функция должна использоваться только если
WIFEXITED()истинно.Доступность: Unix.
-
os.WSTOPSIG(status) -
Возвращает сигнал, который привёл к остановке процесса.
Эта функция должна использоваться только если
WIFSTOPPED()истинно.Доступность: Unix.
-
os.WTERMSIG(status) -
Возвращает номер сигнала, который привёл к завершению процесса.
Эта функция должна использоваться только если
WIFSIGNALED()истинно.Доступность: Unix.
Интерфейс к планировщику
Эти функции управляют тем, как операционная система выделяет процессорное время процессу. Они доступны только на некоторых платформах Unix. Для получения более подробной информации обратитесь к страницам руководства Unix.
Введено в версии 3.3.
Следующие политики планирования доступны, если они поддерживаются операционной системой.
-
os.SCHED_OTHER -
Политика планирования по умолчанию.
-
os.SCHED_BATCH -
Политика планирования для CPU-ёмких процессов, которая пытается сохранить интерактивность на остальной части компьютера.
-
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) -
Возвращает квант времени для политики планирования с круговой очередью для процесса с PID pid. pid со значением 0 означает вызывающий процесс.
-
os.sched_yield() -
Добровольно уступает процессор.
-
os.sched_setaffinity(pid, mask) -
Ограничить процесс с PID pid (или текущий процесс, если ноль) набором ЦП. mask — итерируемый объект целых чисел, представляющий набор ЦП, к которому должен быть ограничен процесс.
-
os.sched_getaffinity(pid) -
Возвращает набор ЦП, к которому ограничен процесс с PID pid (или текущий процесс, если ноль).
Разное системное информация
-
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.
Следующие данные используются для поддержки операций манипулирования путями. Они определены для всех платформ.
Операции более высокого уровня над именами путей определены в модуле 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.
Случайные числа
-
os.getrandom(size, flags=0) -
Получить до size случайных байтов. Функция может вернуть меньше байтов, чем запрошено.
Эти байты можно использовать для инициализации генераторов случайных чисел в пользовательском пространстве или в криптографических целях.
getrandom()полагается на энтропию, собранную из драйверов устройств и других источников внешнего шума. Излишнее чтение больших объёмов данных негативно скажется на других пользователях устройств/dev/randomи/dev/urandom.Аргумент
flags— это битовая маска, которая может содержать ноль или более из следующих значений, объединённых операцией «или»:os.GRND_RANDOMиGRND_NONBLOCK.См. также страницу руководства Linux getrandom().
Доступность: 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 используется
CryptGenRandom().См. также
Модуль
secretsпредоставляет функции более высокого уровня. Для удобного интерфейса с генератором случайных чисел, предоставляемым вашей платформой, см.random.SystemRandom.Изменено в версии 3.6.0: В Linux,
getrandom()теперь используется в режиме блокировки для повышения безопасности.Изменено в версии 3.5.2: В Linux, если вызов
getrandom()блокируется (пул энтропии urandom ещё не инициализирован), происходит обращение к чтению/dev/urandom.Изменено в версии 3.5: В Linux 3.17 и новее, при наличии, используется системный вызов
getrandom(). В OpenBSD 5.6 и новее используется функция Cgetentropy(). Эти функции избегают использования внутреннего дескриптора файла.
-
os.GRND_NONBLOCK -
По умолчанию, при чтении из
/dev/random,getrandom()блокируется, если доступны случайные байты, а при чтении из/dev/urandom, блокировка происходит, если пул энтропии ещё не был инициализирован.Если установлен флаг
GRND_NONBLOCK, тогдаgetrandom()не блокируется в этих случаях, а вместо этого сразу поднимает исключениеBlockingIOError.Добавлена в версии 3.6.
-
os.GRND_RANDOM -
Если этот бит установлен, случайные байты берутся из пула
/dev/randomвместо пула/dev/urandom.Добавлена в версии 3.6.
© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/library/os.html