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, что означает, что нераспознаваемые байты заменяются символом Unicode U+DCxx при декодировании, а затем снова преобразуются в исходные байты при кодировании.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает этой гарантии, функции API могут вызывать UnicodeErrors.
Параметры процесса
Эти функции и данные предоставляют информацию и выполняют операции над текущим процессом и пользователем.
-
os.ctermid() -
Возвращает имя файла, соответствующее контролирующему терминалу процесса.
Доступность: Unix.
-
os.environ -
Объект отображения, представляющий строковую среду. Например,
environ['HOME']— это путь к вашему домашнему каталогу (на некоторых платформах), и он эквивалентенgetenv("HOME")в C.Это отображение запоминается при первом импорте модуля
os, обычно во время запуска Python в рамках обработкиsite.py. Изменения в среде, внесенные после этого момента, не отражаются вos.environ, за исключением изменений, внесенных путем прямого измененияos.environ.Если платформа поддерживает функцию
putenv(), это отображение можно использовать для изменения среды, а также для запроса среды.putenv()будет вызвана автоматически при изменении отображения.В Unix ключи и значения используют
sys.getfilesystemencoding()и обработчик ошибок'surrogateescape'. Используйтеenvironb, если вы хотите использовать другое кодирование.Примечание
Прямое обращение к
putenv()не изменяетos.environ, поэтому лучше изменятьos.environ.Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, установка
environможет привести к утечкам памяти. Обратитесь к документации системы поputenv().Если
putenv()не предоставлена, измененная копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали измененную среду.Если платформа поддерживает функцию
unsetenv(), можно удалять элементы из этого отображения, чтобы сбросить переменные среды.unsetenv()будет вызвана автоматически при удалении элемента изos.environ, а также при вызове одного из методовpop()илиclear().
-
os.environb -
Битовая версия
environ: объект отображения, представляющий среду в виде байтовых строк.environиenvironbсинхронизированы (изменениеenvironbобновляетenviron, и наоборот).environbдоступен только еслиsupports_bytes_environравноTrue.Добавлена в версии 3.2.
-
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 и результат являются строками.
В Unix ключи и значения декодируются с помощью
sys.getfilesystemencoding()и обработчика ошибок'surrogateescape'. Используйтеos.getenvb(), если вы хотите использовать другое кодирование.Доступность: большинство версий Unix, Windows.
-
os.getenvb(key, default=None) -
Возвращает значение переменной среды key, если она существует, или default, если нет. key, default и результат являются байтовыми строками.
getenvb()доступен только еслиsupports_bytes_environравноTrue.Доступность: большинство версий Unix.
Добавлена в версии 3.2.
-
os.get_exec_path(env=None) -
Возвращает список каталогов, которые будут проверяться при поиске исполняемого файла с указанным именем, аналогично оболочке, при запуске процесса. При указании env, он должен быть словарем переменных среды для поиска PATH. По умолчанию, когда env равно
None, используетсяenviron.Добавлена в версии 3.2.
-
os.getegid() -
Возвращает эффективную группу id текущего процесса. Это соответствует биту «set id» в файле, выполняемом в текущем процессе.
Доступность: Unix.
-
os.geteuid() -
Возвращает текущий эффективный идентификатор пользователя процесса.
Доступность: Unix.
-
os.getgid() -
Возвращает реальный идентификатор группы текущего процесса.
Доступность: Unix.
-
os.getgrouplist(user, group) -
Возвращает список идентификаторов групп, к которым принадлежит пользователь. Если группа не в списке, она включается; обычно группа указывается как поле идентификатора группы из записи пароля для пользователя.
Доступность: Unix.
Введено в версии 3.3.
-
os.getgroups() -
Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.
Доступность: Unix.
Примечание
В Mac OS X поведение
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 возвращается идентификатор процесса init (1), в Windows возвращается тот же идентификатор, который может быть повторно использован другим процессом.
Доступность: 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().Доступность: большинство вариантов Unix, Windows.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, установка
environможет привести к утечке памяти. Обратитесь к системной документации для putenv.Когда
putenv()поддерживается, присваивания элементам вos.environавтоматически переводятся в соответствующие вызовыputenv(); однако, вызовыputenv()не обновляютos.environ, поэтому предпочтительнее присваивать элементыos.environ.Вызывает событие аудита
os.putenvс аргументамиkey,value.
-
os.setegid(egid) -
Устанавливает эффективный идентификатор группы текущего процесса.
Доступность: Unix.
-
os.seteuid(euid) -
Установить текущий эффективый идентификатор пользователя процесса.
Доступность: Unix.
-
os.setgid(gid) -
Установить текущий идентификатор группы процесса.
Доступность: Unix.
-
os.setgroups(groups) -
Установить список дополнительных идентификаторов групп, связанных с текущим процессом, на groups. groups должен быть последовательностью, а каждый элемент должен быть целым числом, определяющим группу. Обычно эта операция доступна только суперпользователю.
Доступность: Unix.
Примечание
В Mac OS X длина 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 и возвращает предыдущую маску 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().Когда
unsetenv()поддерживается, удаление элементов вos.environавтоматически переводится в соответствующий вызовunsetenv(); однако, вызовыunsetenv()не обновляютos.environ, поэтому предпочтительнее удалять элементыos.environ.Поднимает событие аудита
os.unsetenvс аргументомkey.Доступность: большинство вариантов Unix.
Создание объектов файлов
Эти функции создают новые объекты файлов. (См. также open() для открытия дескрипторов файлов.)
Операции с дескрипторами файлов
Эти функции работают со потоками ввода/вывода, к которым обращаются с использованием дескрипторов файлов.
Дескрипторы файлов — это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет дескриптор файла 0, стандартный вывод — 1, а стандартная ошибка — 2. Далее файлы, открытые процессом, будут назначены номерами 3, 4, 5 и так далее. Название «дескриптор файла» немного обманчиво; на платформах Unix сокеты и каналы также ссылаются на дескрипторы файлов.
Метод fileno() может использоваться для получения дескриптора файла, связанного с file object, когда это необходимо. Обратите внимание, что использование дескриптора файла напрямую будет обходить методы объекта файла, игнорируя такие аспекты, как внутреннее буферизация данных.
-
os.close(fd) -
Закрыть дескриптор файла fd.
-
os.closerange(fd_low, fd_high) -
Закрыть все дескрипторы файлов от fd_low (включительно) до fd_high (исключительно), игнорируя ошибки. Эквивалентно (но намного быстрее), чем:
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
-
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None) -
Копирует count байт из дескриптора файла src, начиная с смещения offset_src, в дескриптор файла dst, начиная со смещения offset_dst. Если offset_src имеет значение None, то src считывается из текущей позиции; соответственно для offset_dst. Файлы, на которые указывают src и dst, должны находиться в одной файловой системе, иначе возникает исключение
OSErrorс атрибутомerrno, установленным вerrno.EXDEV.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пользовательское пространство и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в двоичном режиме.
Возвращаемое значение — количество скопированных байтов. Это может быть меньше запрошенного количества.
Availability: Ядро Linux >= 4.5 или glibc >= 2.27.
Новое в версии 3.8.
-
os.device_encoding(fd) -
Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; иначе возвращает
None.
-
os.dup(fd) -
Возвращает дубликат дескриптора файла fd. Новый дескриптор файла является non-inheritable.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый дескриптор файла является inheritable.
Изменено в версии 3.4: Новый дескриптор файла теперь не наследуется.
-
os.dup2(fd, fd2, inheritable=True) -
Дублирует дескриптор файла fd в fd2, предварительно закрыв последний при необходимости. Возвращает fd2. Новый дескриптор файла является inheritable по умолчанию или не наследуемым, если inheritable равно
False.Изменено в версии 3.4: Добавлен необязательный параметр inheritable.
Изменено в версии 3.7: Возвращает fd2 при успехе. Ранее всегда возвращалось
None.
-
os.fchmod(fd, mode) -
Изменяет режим файла, заданного fd, на числовое значение mode. См. документацию для
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(fd, mode).Вызывает событие аудита auditing event
os.chmodс аргументамиpath,mode,dir_fd.Availability: Unix.
-
os.fchown(fd, uid, gid) -
Изменяет идентификаторы владельца и группы файла, заданного fd, на числовые значения uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См.
chown(). Начиная с Python 3.3, это эквивалентноos.chown(fd, uid, gid).Вызывает событие аудита auditing event
os.chownс аргументамиpath,uid,gid,dir_fd.Availability: Unix.
-
os.fdatasync(fd) -
Принудительная запись файла с дескриптором файла fd на диск. Не принуждает обновление метаданных.
Availability: 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).Availability: 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).Availability: Unix.
-
os.fsync(fd) -
Принудительная запись файла с дескриптором файла fd на диск. В Unix это вызывает собственную функцию
fsync(); в Windows — функцию MS_commit().Если вы начинаете с буферизованного объекта файла Python file object f, сначала выполните
f.flush(), а затемos.fsync(f.fileno()), чтобы убедиться, что все внутренние буферы, связанные с f, записаны на диск.Availability: 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 run-time; константы флагов (например,
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. 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, возвращается пустой объект bytes.
Доступность: 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 и новее. Использование флагов требует 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 и новее. Использование флагов требует Linux 4.7 или новее.
Введено в версии 3.7.
-
os.RWF_DSYNC -
Обеспечивает эквивалент флага
O_DSYNCдля каждой записи. Это свойство флага применяется только к диапазону данных, записанных системным вызовом.Доступность: Linux 4.7 и новее.
Введено в версии 3.7.
-
os.RWF_SYNC -
Обеспечивает эквивалент флага
O_SYNCдля каждой записи. Это свойство флага применяется только к диапазону данных, записанных системным вызовом.Доступность: 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, in, offset, count) -
os.sendfile(out, in, offset, count, [headers, ][trailers, ]flags=0) -
Скопировать count байтов из дескриптора файла in в дескриптор файла out, начиная со смещения offset. Возвращает количество отправленных байтов. При достижении EOF возвращает 0.
Первый формат функции поддерживается всеми платформами, которые определяют
sendfile().В Linux, если offset задан как
None, байты считываются из текущей позиции in, а позиция in обновляется.Второй случай может использоваться в Mac OS X и FreeBSD, где headers и trailers — это произвольные последовательности буферов, которые записываются до и после данных из in. Он возвращает то же самое, что и первый случай.
В Mac OS X и FreeBSD значение 0 для count указывает на отправку до достижения конца in.
Все платформы поддерживают сокеты в качестве дескриптора файла out, а некоторые платформы также позволяют использовать другие типы (например, обычные файлы, каналы).
Приложения, работающие на разных платформах, не должны использовать аргументы headers, trailers и flags.
Доступность: Unix.
Примечание
Для более высокого уровня обёртки
sendfile()см.socket.socket.sendfile().Введено в версии 3.3.
-
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 должен быть последовательностью объектов типа bytes. Буферы обрабатываются в порядке массива. Вся информация первого буфера записывается до перехода ко второму и так далее.
Возвращает общее количество фактически записанных байтов.
Операционная система может установить ограничение (
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.На некоторых системах 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 атрибуты
st_ino,st_devиst_nlinkобъектаstat_resultвсегда равны нулю. Используйте функциюos.stat()для получения этих атрибутов.Результат кэшируется в объекте
os.DirEntry, с отдельным кэшем для follow_symlinksTrueиFalse. Используйте функциюos.stat()для получения актуальной информации.
Обратите внимание на соответствие между некоторыми атрибутами и методами объекта
os.DirEntryи объектаpathlib.Path. В частности, атрибутnameимеет такое же значение, как и методыis_dir(),is_file(),is_symlink()иstat().Добавлена в версии 3.5.
-
-
os.stat(path, *, dir_fd=None, follow_symlinks=True) -
Получить состояние файла или дескриптора файла. Выполняет эквивалент системного вызова
stat()для заданного пути. path может быть указан как строка или байты — напрямую или косвенно через интерфейсPathLike— или как открытый дескриптор файла. Возвращает объектstat_result.Эта функция обычно следует за символическими ссылками; чтобы получить состояние символической ссылки, добавьте аргумент
follow_symlinks=False, или используйтеlstat().Эта функция может поддерживать указание дескриптора файла и не следование за символическими ссылками.
В Windows, передача
follow_symlinks=Falseотключит следование всем точками переименования имени-заместителя, включая символические ссылки и узлы каталогов. Другие типы точек переименования, которые не напоминают ссылки или которые операционная система не может отследить, будут открыты непосредственно. При слежении за цепочкой нескольких ссылок это может привести к возврату исходной ссылки вместо ссылки, которая помешала полному прохождению. Чтобы получить результаты stat для конечного пути в этом случае, используйте функцию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: Принимает объект path-like object.
Изменено в версии 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. Обычно:- номер узла на 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 -
Строка, которая однозначно идентифицирует тип файловой системы, содержащей файл.
На системах Mac OS также могут быть доступны следующие атрибуты:
-
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сTrue. Например, это выражение вычисляет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, он должен быть кортежем из двух элементов вида
(atime_ns, mtime_ns), где каждый элемент — целое число, представляющее наносекунды. - Если times не
None, он должен быть кортежем из двух элементов вида(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, он должен быть кортежем из двух элементов вида
-
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 при topdownFalseне влияет на поведение обхода, поскольку в режиме снизу вверх каталоги в 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))Изменено в версии 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)Доступность: 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 может быть типа bytes или str (прямо или косвенно через интерфейс
PathLike). Если это str, он кодируется с помощью кодировки файловой системы.Эта функция может поддерживать указание дескриптора файла и не следовать символичным ссылкам.
Вызывает событие аудита аудита
os.getxattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект-путь для path и attribute.
-
os.listxattr(path=None, *, follow_symlinks=True) -
Возвращает список расширенных атрибутов файловой системы для path. Атрибуты в списке представлены как строки, декодированные с помощью кодировки файловой системы. Если path это
None,listxattr()будет проверять текущую директорию.Эта функция может поддерживать указание дескриптора файла и не следовать символичным ссылкам.
Вызывает событие аудита аудита
os.listxattrс аргументомpath.Изменено в версии 3.6: Принимает объект-путь.
-
os.removexattr(path, attribute, *, follow_symlinks=True) -
Удаляет расширенный атрибут файловой системы attribute из path. attribute должно быть типа bytes или str (прямо или косвенно через интерфейс
PathLike). Если это строка, она кодируется с помощью кодировки файловой системы.Эта функция может поддерживать указание дескриптора файла и не следовать символичным ссылкам.
Вызывает событие аудита аудита
os.removexattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект-путь для path и attribute.
-
os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True) -
Устанавливает расширенный атрибут файловой системы attribute для path со значением value. attribute должен быть типа bytes или str без вложенных нулей (прямо или косвенно через интерфейс
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 -
Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КБ.
-
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.См. документацию Microsoft для получения дополнительной информации о том, как загружаются DLL.
Вызывает событие аудита аудита
os.add_dll_directoryс аргументомpath.Доступность: Windows.
В версии 3.8: Предыдущие версии CPython разрешали DLL, используя поведение по умолчанию для текущего процесса. Это приводило к несоответствиям, например, к поиску только иногда
PATHили текущего рабочего каталога, и функции ОС, такие какAddDllDirectory, не имели никакого эффекта.В 3.8 два основных способа загрузки DLL теперь явно переопределяют поведение на уровне процесса для обеспечения согласованности. См. примечания по переносу для получения информации о обновлении библиотек.
-
os.execl(path, arg0, arg1, ...) -
os.execle(path, arg0, arg1, ..., env) -
os.execlp(file, arg0, arg1, ...) -
os.execlpe(file, arg0, arg1, ..., env) -
os.execv(path, args) -
os.execve(path, args, env) -
os.execvp(file, args) -
os.execvpe(file, args, env) -
Эти функции выполняют новую программу, заменяя текущий процесс; они не возвращаются. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий. Ошибки будут сообщаться как исключения
OSError.Текущий процесс заменяется немедленно. Объекты и дескрипторы открытых файлов не сбрасываются, поэтому, если в этих открытых файлах могут быть буферизованные данные, вы должны сбросить их с помощью
sys.stdout.flush()илиos.fsync()перед вызовом функцииexec*.Варианты функций
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.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 возвращаемое значение содержит код возврата дочернего процесса со знаком.Это реализуется с помощью
subprocess.Popen; см. документацию этого класса для более мощных способов управления и взаимодействия с дочерними процессами.
-
os.posix_spawn(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None) -
Оборачивает API библиотеки
posix_spawn()C для использования из 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, он сбросит эффективный UID и GID дочернего процесса до реального UID и GID родительского процесса. Если аргумент равенFalse, дочерний процесс сохраняет эффективный UID и GID родителя. В любом случае, если биты разрешения установки UID и GID включены в исполняемом файле, их действие переопределит установку эффективного UID и GID. Этот аргумент соответствует флагу библиотеки 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 библиотеки
posix_spawnp()C для использования из 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и т.д. не отражаются в среде выполняемой команды. Любой вывод от command будет перенаправлен в стандартный поток вывода интерпретатора.В Unix, значение возврата — это код завершения процесса, закодированный в формате, указанном для
wait(). Обратите внимание, что POSIX не определяет смысл значения возврата C-функцииsystem(), поэтому значение возврата Python-функции зависит от системы.В Windows, значение возврата — это значение, возвращённое командной оболочкой после выполнения command. Оболочка определяется переменной окружения Windows
COMSPEC: обычно cmd.exe, которая возвращает код завершения выполняемой команды; на системах с неродной оболочкой, обратитесь к документации вашей оболочки.Модуль
subprocessпредоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этой функции. См. раздел Замена устаревших функций модулем subprocess в документацииsubprocessдля полезных рецептов.Вызывает событие аудита аудита
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), или GetProcessTimes MSDN в Windows. В Windows известны только
userиsystem; остальные атрибуты равны нулю.Доступность: Unix, Windows.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на похожий на кортеж объект с именованными атрибутами.
-
-
os.wait() -
Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и указатель на код возврата: 16-битное число, низкий байт которого — номер сигнала, убившего процесс, а высокий байт — код возврата (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл ядра.
Доступность: Unix.
-
os.waitid(idtype, id, options) -
Ожидает завершения одного или нескольких дочерних процессов. idtype может быть
P_PID,P_PGIDилиP_ALL. 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.WEXITED -
os.WSTOPPED -
os.WNOWAIT -
Флаги, которые могут быть использованы в options в
waitid(), определяющие, какой сигнал дочернего процесса ожидать.Доступность: Unix.
Добавлена в версии 3.3.
-
os.CLD_EXITED -
os.CLD_DUMPED -
os.CLD_TRAPPED -
os.CLD_CONTINUED -
Возможные значения для
si_codeв результате, возвращаемомwaitid().Доступность: Unix.
Добавлена в версии 3.3.
-
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, возвращают соответствующие дескрипторы процессов.Изменено в версии 3.5: Если системный вызов прерывается, а обработчик сигнала не вызывает исключение, функция теперь повторно пытается выполнить системный вызов вместо повышения исключения
InterruptedError(см. PEP 475 для обоснования).
-
os.wait3(options) -
Аналогично
waitpid(), но без аргумента идентификатора процесса и возвращает кортеж из 3 элементов: идентификатор процесса дочернего процесса, код завершения и информацию об использовании ресурсов. Обратитесь кresource.getrusage()для получения подробной информации об использовании ресурсов. Аргумент option такой же, как тот, что передается вwaitpid()иwait4().Доступность: Unix.
-
os.wait4(pid, options) -
Аналогично
waitpid(), за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор процесса дочернего процесса, код завершения и информацию об использовании ресурсов. Обратитесь кresource.getrusage()для получения подробной информации об использовании ресурсов. Аргументы функцииwait4()такие же, как и аргументы функцииwaitpid().Доступность: Unix.
-
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 -
Политика планирования для ресурсоёмких процессов, которая пытается сохранить интерактивность остальных процессов на компьютере.
-
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— это битовая маска, которая может содержать нулевое или несколько следующих значений, объединённых операцией OR: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.8/library/os.html