Содержание страницы
os – Различные интерфейсы операционной системы¶os – Miscellaneous operating system interfaces
Исходный код: Lib/os.py
Этот модуль предоставляет переносимый способ использования функций, зависящих от операционной системы. Если нужно просто прочитать или записать файл, см. open(); для работы с путями используйте модуль os.path; для чтения всех строк из всех файлов в командной строке – модуль fileinput. Для создания временных файлов и каталогов обратитесь к модулю tempfile, а для высокоуровневой работы с файлами и каталогами – к модулю shutil.
Примечания о доступности этих функций:
Все встроенные модули Python, зависящие от операционной системы, устроены так, что при наличии одинаковой функциональности они используют один и тот же интерфейс; например, функция
os.stat(path)возвращает информацию stat о пути в одном и том же формате (который, как вышло, берёт начало от интерфейса POSIX).Расширения, характерные для конкретной операционной системы, также доступны через модуль
os, но их использование, конечно, угрожает переносимости.Все функции, принимающие пути или имена файлов, принимают как объекты bytes, так и строки, и возвращают объект того же типа, если возвращается путь или имя файла.
На VxWorks os.fork, os.execv и os.spawn*p* не поддерживаются.
Примечание
Все функции в этом модуле возбуждают OSError (или его подклассы) в случае недопустимых или недоступных имён файлов и путей, а также других аргументов, имеющих правильный тип, но не принимаемых операционной системой.
-
os.name¶ Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена:
'posix','nt','java'.См. также
sys.platformимеет более мелкую гранулярность.os.uname()предоставляет системно-зависимую информацию о версии.Модуль
platformпредоставляет подробные проверки идентификации системы.
Имена файлов, аргументы командной строки и переменные окружения¶File Names, Command Line Arguments, and Environment Variables
В Python имена файлов, аргументы командной строки и переменные окружения представляются строковым типом. В некоторых системах перед передачей операционной системе эти строки необходимо декодировать из байтов и в байты. Python использует кодировку файловой системы для выполнения этого преобразования (см.
sys.getfilesystemencoding()).
Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует обработчик ошибок кодирования surrogateescape, что означает, что нераскодируемые байты заменяются на символ Unicode U+DCxx при декодировании, а затем снова преобразуются в исходные байты при кодировании.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не может этого гарантировать, функции API могут вызывать исключения Unicode.
Параметры процесса¶Process Parameters
Эти функции и элементы данных предоставляют информацию о текущем процессе и пользователе, а также позволяют с ними работать.
-
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() Эти функции описаны в Files and Directories.
-
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)¶ Возвращает значение переменной окружения ключ, если она существует, или значение по умолчанию, если нет. ключ, значение по умолчанию и результат имеют тип str.
В Unix ключи и значения декодируются с помощью
sys.getfilesystemencoding()и обработчика ошибок'surrogateescape'. Используйтеos.getenvb(), если tребуется другая кодировка.Доступность: большинство разновидностей Unix, Windows.
-
os.getenvb(key, default=None)¶ Возвращает значение переменной окружения ключ, если она существует, или значение по умолчанию, если нет. ключ, значение по умолчанию и результат имеют тип bytes.
getenvb()доступна только еслиsupports_bytes_environравенTrue.Доступность: большинство разновидностей Unix.
Новое в версии 3.2.
-
os.get_exec_path(env=None)¶ Возвращает список каталогов, в которых будет выполняться поиск указанного исполняемого файла, аналогично оболочке, при запуске процесса. env, если указан, должен быть словарём переменных окружения, в котором искать PATH. По умолчанию, когда env равен
None, используетсяenviron.Новое в версии 3.2.
-
os.getegid()¶ Возвращает эффективный идентификатор группы текущего процесса. Это соответствует биту «set id» у файла, выполняемого в текущем процессе.
Доступность: Unix.
-
os.geteuid()¶ Возвращает эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.getgid()¶ Возвращает реальный идентификатор группы текущего процесса.
Доступность: Unix.
-
os.getgrouplist(user, group)¶ Возвращает список идентификаторов групп, к которым принадлежит user. Если group отсутствует в списке, она добавляется; обычно group указывается как поле идентификатора группы из записи пароля для user.
Доступность: 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()¶ Return the name of the user logged in on the controlling terminal of the process. For most purposes, it is more useful to use
getpass.getuser()since the latter checks the environment variablesLOGNAMEorUSERNAMEto find out who the user is, and falls back topwd.getpwuid(os.getuid())[0]to get the login name of the current real user id.Доступность: Unix, Windows.
-
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(), чтобы установить идентификатор группы процессов процесса с идентификатором pid равным группе процессов с идентификатором 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если нативный тип ОС окружения – bytes (например,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.
Создание файловых объектов¶File Object Creation
Эти функции создают новые файловые объекты. (См. также
open() для открытия файловых дескрипторов.)
Операции с файловыми дескрипторами¶File Descriptor Operations
Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.
Файловые дескрипторы – это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно имеет файловый дескриптор 0, стандартный вывод – 1, а стандартный вывод ошибок – 2. Последующие файлы, открываемые процессом, получают номера 3, 4, 5 и так далее. Название «файловый дескриптор» слегка обманчиво; на платформах Unix сокеты и каналы также обозначаются файловыми дескрипторами.
Метод fileno() можно использовать для получения файлового дескриптора,
связанного с файловым объектом при необходимости. Обратите внимание, что прямое использование файлового
дескриптора обходит методы файлового объекта, игнорируя такие аспекты, как
внутренняя буферизация данных.
-
os.close(fd)¶ Закрывает файловый дескриптор fd.
-
os.closerange(fd_low, fd_high)¶ Закрывает все файловые дескрипторы от fd_low (включительно) до fd_high (не включая), игнорируя ошибки. Эквивалентно (но гораздо быстрее):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
-
os.copy_file_range(src, dst, count, offset_src=None, offset_dst=None)¶ Копирует count байт из файлового дескриптора src, начиная со смещения offset_src, в файловый дескриптор dst, начиная со смещения offset_dst. Если offset_src равно None, то src читается с текущей позиции; аналогично для offset_dst. Файлы, на которые указывают src и dst, должны находиться в одной файловой системе, иначе
OSErrorбудет вызвано сerrno, установленным вerrno.EXDEV.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя и обратно в ядро. Кроме того, некоторые файловые системы могут реализовывать дополнительные оптимизации. Копирование выполняется так, как если бы оба файла были открыты в бинарном режиме.
Возвращаемое значение – количество скопированных байт. Оно может быть меньше запрошенного объёма.
Доступность: Linux kernel >= 4.5 or glibc >= 2.27.
Новое в версии 3.8.
-
os.device_encoding(fd)¶ Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; иначе возвращает
None.
-
os.dup(fd)¶ Возвращает дубликат файлового дескриптора fd. Новый файловый дескриптор является ненаследуемым.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый файловый дескриптор является наследуемым.
Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
-
os.dup2(fd, fd2, inheritable=True)¶ Дублирует файловый дескриптор fd в fd2, предварительно закрывая последний, если необходимо. Возвращает fd2. Новый файловый дескриптор по умолчанию является наследуемым или ненаследуемым, если inheritable равно
False.Изменено в версии 3.4: Добавлен необязательный параметр inheritable.
Изменено в версии 3.7: Возвращает fd2 при успехе. Ранее всегда возвращалось
None.
-
os.fchmod(fd, mode)¶ Изменяет режим файла, заданного fd, на числовой mode. См. документацию
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(fd, mode).Вызывает событие аудита
os.chmodс аргументамиpath,mode,dir_fd.Доступность: Unix.
-
os.fchown(fd, uid, gid)¶ Изменяет идентификаторы владельца и группы файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов без изменений, установите его в -1. См.
chown(). Начиная с Python 3.3, это эквивалентноos.chown(fd, uid, gid).Возбуждает событие аудита
os.chownс аргументамиpath,uid,gid,dir_fd.Доступность: Unix.
-
os.fdatasync(fd)¶ Принудительная запись файла с файловым дескриптором fd на диск. Не принуждает к обновлению метаданных.
Доступность: Unix.
Примечание
Эта функция недоступна в MacOS.
-
os.fpathconf(fd, name)¶ Возвращает информацию о системной конфигурации, относящуюся к открытому файлу. name задаёт значение конфигурации для получения; это может быть строка, являющаяся именем определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и другие). Некоторые платформы определяют дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре
pathconf_names. Для переменных конфигурации, не включённых в это отображение, также принимается передача целого числа для name.Если name – строка и не известна, возбуждается исключение
ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно присутствует вpathconf_names, возбуждается исключениеOSErrorсerrno.EINVALв качестве кода ошибки.Начиная с Python 3.3, это эквивалентно
os.pathconf(fd, name).Доступность: Unix.
-
os.fstat(fd)¶ Получить статус файлового дескриптора fd. Возвращает объект
stat_result.Начиная с Python 3.3, это эквивалентно
os.stat(fd).См. также
Функция
stat().
-
os.fstatvfs(fd)¶ Возвращает информацию о файловой системе, содержащей файл, связанный с файловым дескриптором fd, как
statvfs(). Начиная с Python 3.3, это eквивалентноos.statvfs(fd).Доступность: Unix.
-
os.fsync(fd)¶ Принудительно записывает файл с файловым дескриптором fd на диск. В Unix вызывает нативную функцию
fsync(); в Windows – функцию MS_commit().Если работа ведётся с буферизованным файловым объектом Python file object f, сначала следует выполнить
f.flush(), а затемos.fsync(f.fileno()), чтобы гарантировать запись на диск всех внутренних буферов, связанных с f.Доступность: Unix, Windows.
-
os.ftruncate(fd, length)¶ Обрезает файл, соответствующий файловому дескриптору fd, так, чтобы его размер не превышал length байт. Начиная с Python 3.3, это эквивалентно
os.truncate(fd, length).Возбуждает событие аудита
os.truncateс аргументамиfd,length.Доступность: Unix, Windows.
Изменено в версии 3.5: Добавлена поддержка Windows
-
os.get_blocking(fd)¶ Возвращает блокирующий режим файлового дескриптора:
False, если установлен флагO_NONBLOCK, иTrue, если флаг сброшен.См. также
set_blocking()иsocket.socket.setblocking().Доступность: Unix.
Новое в версии 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; константы флагов (например,
O_RDONLYиO_WRONLY) определены в модулеos. В частности, в Windows необходимо добавитьO_BINARYдля открытия файлов в двоичном режиме.Эта функция поддерживает пути относительно файловых дескрипторов каталогов с помощью параметра dir_fd.
Вызывает событие аудита
openс аргументамиpath,mode,flags.Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию
open(), которая возвращает файловый объект с методамиread()иwrite()(и многими другими). Чтобы обернуть файловый дескриптор в файловый объект, используйтеfdopen().Новое в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.5: Если системный вызов был прерван и обработчик сигнала не возбуждает исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).Изменено в версии 3.6: Принимает объект, подобный пути.
Следующие константы являются значениями параметра flags функции
open(). Их можно комбинировать с помощью оператора побитового ИЛИ
|. Некоторые из них доступны не на всех платформах. Описание их
доступности и использования см. в справочной странице open(2) в Unix
или в MSDN в Windows.
-
os.O_RDONLY¶ -
os.O_WRONLY¶ -
os.O_RDWR¶ -
os.O_APPEND¶ -
os.O_CREAT¶ -
os.O_EXCL¶ -
os.O_TRUNC¶ Приведённые выше константы доступны в Unix и Windows.
-
os.O_DSYNC¶ -
os.O_RSYNC¶ -
os.O_SYNC¶ -
os.O_NDELAY¶ -
os.O_NONBLOCK¶ -
os.O_NOCTTY¶ -
os.O_CLOEXEC¶ Приведённые выше константы доступны только в Unix.
Изменено в версии 3.3: добавлена константа
O_CLOEXEC.
-
os.O_BINARY¶ -
os.O_NOINHERIT¶ -
os.O_SHORT_LIVED¶ -
os.O_TEMPORARY¶ -
os.O_RANDOM¶ -
os.O_SEQUENTIAL¶ -
os.O_TEXT¶ Приведённые выше константы доступны только в Windows.
-
os.O_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, возвращается пустой байтовый объект.
Доступность: 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_DSYNCopen(2). Это действие флага распространяется только на диапазон данных, записанных системным вызовом.Доступность: Linux 4.7 и новее.
Добавлено в версии 3.7.
-
os.RWF_SYNC¶ Предоставляет пооперационный эквивалент флага
O_SYNCopen(2). Это действие флага распространяется только на диапазон данных, записанных системным вызовом.Доступность: Linux 4.7 и новее.
Добавлено в версии 3.7.
-
os.read(fd, n)¶ Читает не более n байт из файлового дескриптора fd.
Возвращает байтовую строку, содержащую прочитанные байты. Если достигнут конец файла, указанного fd, возвращается пустой байтовый объект.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к файловому дескриптору, возвращаемому
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 должен быть последовательностью байтоподобных объектов. Буферы обрабатываются в порядке массива. Сначала полностью записывается содержимое первого буфера, затем второго и так далее.
Возвращает общее количество байтов, фактически записанных.
Операционная система может устанавливать ограничение (значение
sysconf()'SC_IOV_MAX') на количество буферов, которые можно использовать.Доступность: Unix.
Новое в версии 3.3.
Определение размера терминала¶Querying the size of a terminal
Новое в версии 3.3.
-
os.get_terminal_size(fd=STDOUT_FILENO)¶ Возвращает размер окна терминала в виде
(columns, lines), кортежа типаterminal_size.Необязательный аргумент
fd(по умолчаниюSTDOUT_FILENO, или стандартный вывод) указывает, какой файловый дескриптор следует опросить.Если файловый дескриптор не подключён к терминалу, возбуждается
OSError.shutil.get_terminal_size()– это высокоуровневая функция, которую следует использовать обычно;os.get_terminal_size– это низкоуровневая реализация.Доступность: Unix, Windows.
Наследование файловых дескрипторов¶Inheritance of File Descriptors
Новое в версии 3.4.
Файловый дескриптор имеет флаг «наследуемости», который указывает, может ли файловый дескриптор наследоваться дочерними процессами. Начиная с Python 3.4, файловые дескрипторы, создаваемые Python, по умолчанию ненаследуемые.
В UNIX ненаследуемые файловые дескрипторы закрываются в дочерних процессах при запуске новой программы; остальные дескрипторы наследуются.
В Windows ненаследуемые дескрипторы и файловые дескрипторы закрываются в дочерних
процессах, за исключением стандартных потоков (файловые дескрипторы 0, 1 и 2: stdin, stdout
и stderr), которые всегда наследуются. При использовании функций spawn*
наследуются все наследуемые дескрипторы и все наследуемые файловые дескрипторы.
При использовании модуля subprocess все файловые дескрипторы, кроме стандартных
потоков, закрываются, а наследуемые дескрипторы наследуются только в том случае, если
параметр close_fds имеет значение False.
-
os.get_inheritable(fd)¶ Получает флаг «наследуемости» указанного файлового дескриптора (логическое значение).
-
os.set_inheritable(fd, inheritable)¶ Устанавливает флаг наследуемости для указанного файлового дескриптора.
-
os.get_handle_inheritable(handle)¶ Возвращает флаг наследуемости для указанного дескриптора (булево значение).
Доступность: Windows.
-
os.set_handle_inheritable(handle, inheritable)¶ Устанавливает флаг наследуемости для указанного дескриптора.
Доступность: Windows.
Файлы и каталоги¶Files and Directories
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из следующих возможностей:
Указание файлового дескриптора: Обычно аргумент path, передаваемый функциям из модуля
os, должен быть строкой, задающей путь к файлу. Однако некоторые функции теперь в качестве альтернативы принимают открытый файловый дескриптор для своего аргумента path. В этом случае функция будет работать с файлом, на который указывает дескриптор. (В системах POSIX Python вызовет вариант функции с префиксомf(например, вызоветfchdirвместоchdir).)Проверить, может ли path быть указан как файловый дескриптор для конкретной функции на вашей платформе, можно с помощью
os.supports_fd. Если эта функциональность недоступна, её использование вызовет исключениеNotImplementedError.Если функция также поддерживает аргументы dir_fd или follow_symlinks, то указывать любой из них при передаче path в качестве файлового дескриптора будет ошибкой.
Пути относительно дескрипторов каталогов: Если dir_fd не равен
None, то он должен быть файловым дескриптором, ссылающимся на каталог, а путь, над которым выполняется операция, должен быть относительным; в этом случае путь будет считаться относительно этого каталога. Если путь является абсолютным, dir_fd игнорируется. (В системах POSIX Python вызовет вариант функции с суффиксомatи, возможно, с префиксомf(например, вызоветfaccessatвместоaccess).Проверить, поддерживается ли dir_fd для конкретной функции на вашей платформе, можно с помощью
os.supports_dir_fd. Если он недоступен, его использование вызовет исключениеNotImplementedError.
Неследование символическим ссылкам: Если follow_symlinks равен
False, и последний элемент пути, над которым выполняется операция, является символической ссылкой, то функция будет работать с самой символической ссылкой, а не с файлом, на который она указывает. (В системах POSIX Python вызовет вариант функцииl...).Проверить, поддерживается ли follow_symlinks для конкретной функции на вашей платформе, можно с помощью
os.supports_follow_symlinks. Если он недоступен, его использование вызовет исключениеNotImplementedError.
-
os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶ Использует реальный UID/GID для проверки доступа к path. Обратите внимание, что большинство операций используют эффективные UID/GID, поэтому эта функция может использоваться в окружении suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к path. Параметр mode должен быть равен
F_OKдля проверки существования path, или может быть логическим ИЛИ одного или нескольких значенийR_OK,W_OKиX_OKдля проверки прав доступа. ВозвращаетTrue, если доступ разрешён,False– если нет. Подробнее см. на странице man Unix access(2).Эта функция поддерживает указание путей относительно дескрипторов каталогов и отказ от следования по символьным ссылкам.
Если effective_ids равно
True,access()будет выполнять проверки доступа, используя эффективные UID/GID вместо реальных UID/GID. Параметр effective_ids может не поддерживаться на вашей платформе; проверить, доступен ли он, можно с помощьюos.supports_effective_ids. Если он недоступен, его использование вызовет исключениеNotImplementedError.Примечание
Использование
access()для проверки, авторизован ли пользователь, например, на открытие файла, перед фактическим открытием с помощьюopen(), создаёт брешь в безопасности, поскольку пользователь может воспользоваться коротким временным промежутком между проверкой и открытием файла для его изменения. Предпочтительнее использовать подход EAFP. Например:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
лучше написать так:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
Примечание
Операции ввода-вывода могут завершиться ошибкой, даже если
access()указывает, что они должны выполниться успешно, особенно для операций в сетевых файловых системах, которые могут иметь семантику прав доступа, выходящую за рамки обычной POSIX-модели битов разрешений.Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.F_OK¶ -
os.R_OK¶ -
os.W_OK¶ -
os.X_OK¶ Значения, которые передаются в параметре mode функции
access()для проверки существования, читаемости, возможности записи и исполнения path, соответственно.
-
os.chdir(path)¶ Изменяет текущий рабочий каталог на path.
Эта функция поддерживает указание файлового дескриптора. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.
Эта функция может вызывать
OSErrorи подклассы, такие какFileNotFoundError,PermissionError, иNotADirectoryError.Вызывает событие аудита
os.chdirс аргументомpath.Новое в версии 3.3: Добавлена поддержка указания path в качестве файлового дескриптора на некоторых платформах.
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.chflags(path, flags, *, follow_symlinks=True)¶ Устанавливает флаги path в числовое значение flags. flags может принимать комбинацию (побитовое ИЛИ) следующих значений (определённых в модуле
stat):Эта функция поддерживает отказ от следования симлинкам.
Возбуждает событие аудита
os.chflagsс аргументамиpath,flags.Доступность: Unix.
Новое в версии 3.3: Аргумент follow_symlinks.
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶ Изменяет режим path на числовое значение mode. mode может принимать одно из следующих значений (определённых в модуле
stat) или их побитовые комбинации:Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Примечание
Хотя Windows поддерживает
chmod(), с его помощью можно установить только флаг «только для чтения» файла (через константыstat.S_IWRITEиstat.S_IREADили соответствующее целочисленное значение). Все остальные биты игнорируются.Вызывает событие аудита
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: Поддерживает path-подобный объект.
-
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 теперь открывает точки повторной обработки (reparse points), представляющие другой путь (суррогаты имени), включая символические ссылки и точки соединения каталогов. Другие типы точек повторной обработки разрешаются операционной системой как для
stat().
-
os.mkdir(path, mode=0o777, *, dir_fd=None)¶ Создаёт каталог с именем path и числовым режимом mode.
Если каталог уже существует, возбуждается
FileExistsError.На некоторых системах mode игнорируется. Если он используется, сначала применяется маска текущего umask. Если установлены биты, отличные от последних 9 (то есть последних 3 цифр восьмеричного представления mode), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать
chmod().В Windows значение mode, равное
0o700, обрабатывается особым образом: применяется управление доступом к новому каталогу так, что доступ имеют только текущий пользователь и администраторы. Другие значения mode игнорируются.Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
Также можно создавать временные каталоги; см. функцию
tempfile.mkdtemp()модуляtempfile.Вызывает событие аудита
os.mkdirс аргументамиpath,mode,dir_fd.Новое в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.8.20: Теперь в Windows корректно обрабатывается mode со значением
0o700.
-
os.makedirs(name, mode=0o777, exist_ok=False)¶ Функция рекурсивного создания каталогов. Похожа на
mkdir(), но создаёт все промежуточные каталоги, необходимые для размещения конечного каталога.Параметр mode передаётся в
mkdir()для создания конечного каталога; описание того, как он интерпретируется, см. в описании mkdir(). Чтобы задать биты прав доступа для любых вновь создаваемых родительских каталогов, можно установить umask перед вызовомmakedirs(). Биты прав доступа существующих родительских каталогов не изменяются.Если exist_ok равно
False(значение по умолчанию), тоFileExistsErrorвозбуждается, если целевой каталог уже существует.Примечание
makedirs()запутается, если элементы пути для создания включаютpardir(например, «..» в UNIX-системах).Эта функция корректно обрабатывает UNC-пути.
Вызывает событие аудита
os.mkdirс аргументамиpath,mode,dir_fd.Новое в версии 3.2: Параметр exist_ok.
Изменено в версии 3.4.1: До Python 3.4.1, если exist_ok было
Trueи каталог существовал,makedirs()всё равно вызывал ошибку, если mode не совпадал с режимом существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. См. bpo-21082.Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.7: Аргумент mode больше не влияет на биты прав доступа вновь создаваемых промежуточных каталогов.
-
os.mkfifo(path, mode=0o666, *, dir_fd=None)¶ Создаёт FIFO (именованный канал) с именем path и числовым режимом mode. Значение текущего umask сначала вычитается из режима.
Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
FIFO – это каналы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока их не удалят (например, с помощью
os.unlink()). Как правило, FIFO используются как точка встречи между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, чтоmkfifo()не открывает FIFO – он только создаёт точку встречи.Доступность: Unix.
Новое в версии 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 – объект bytes (напрямую или косвенно), результатом будет объект bytes.Эта функция также поддерживает пути, относительные к дескрипторам каталогов.
При попытке разрешить путь, который может содержать ссылки, используйте
realpath()для корректной обработки рекурсии и различий платформ.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Новое в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-подобный объект на Unix.
Изменено в версии 3.8: Принимает path-подобный объект и объект bytes на Windows.
Изменено в версии 3.8: Добавлена поддержка точек соединения каталогов, а также изменено возвращаемое значение: теперь возвращается путь подстановки (который обычно включает префикс
\\?\) вместо необязательного поля «print name», которое возвращалось ранее.
-
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()для отображения всех файлов (кроме каталогов) в заданном пути, имена которых не начинаются с'.'. Вызовentry.is_file()обычно не требует дополнительного системного вызова:with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
Примечание
В системах на базе Unix
scandir()использует системные функции opendir() и readdir(). В Windows используются функции Win32 FindFirstFileW и FindNextFileW.Новое в версии 3.5.
Новое в версии 3.6: Добавлена поддержка протокола менеджера контекста и метода
close(). Если итераторscandir()не исчерпан и не закрыт явно, в его деструкторе будет выброшено предупреждениеResourceWarning.Функция принимает объект, подобный пути.
Изменено в версии 3.7: Добавлена поддержка файловых дескрипторов в Unix.
-
-
class
os.DirEntry¶ Объект, возвращаемый
scandir()для предоставления пути к файлу и других атрибутов записи каталога.scandir()предоставляет как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызовstat()илиlstat(), объектos.DirEntryкэширует результат.Экземпляры
os.DirEntryне предназначены для хранения в долгоживущих структурах данных; если известно, что метаданные файла изменились или прошло много времени с момента вызоваscandir(), вызовитеos.stat(entry.path), чтобы получить актуальную информацию.Поскольку методы
os.DirEntryмогут выполнять системные вызовы, они также могут возбуждатьOSError. Если требуется очень точный контроль над ошибками, можно перехватыватьOSErrorпри вызове одного из методовos.DirEntryи обрабатывать соответствующим образом.Чтобы быть непосредственно используемым в качестве объекта, подобного пути,
os.DirEntryреализует интерфейсPathLike.Атрибуты и методы экземпляра
os.DirEntry:-
name¶ Базовое имя файла записи, относительно
scandir()аргумента path.Атрибут
nameбудет иметь значениеbytes, еслиscandir()аргумент path имеет типbytes, иstrв противном случае. Используйтеfsdecode()для декодирования байтовых имен файлов.
-
path¶ Полное имя пути записи: эквивалентно
os.path.join(scandir_path, entry.name), где scandir_path – этоscandir()path аргумент. Путь является абсолютным, только если аргументscandir()path был абсолютным. Если аргументscandir()path был файловым дескриптором, тоpathатрибут совпадает с атрибутомname.Атрибут
pathбудет иметь значениеbytes, еслиscandir()аргумент path имеет типbytes, иstrв противном случае. Используйтеfsdecode()для декодирования байтовых имен файлов.
-
inode()¶ Возвращает номер инода записи.
Результат кэшируется в объекте
os.DirEntry. Используйтеos.stat(entry.path, follow_symlinks=False).st_inoдля получения актуальной информации.При первом (некэшированном) вызове системный вызов требуется в Windows, но не в Unix.
-
is_dir(*, follow_symlinks=True)¶ Возвращает
True, если эта запись является каталогом или символической ссылкой, указывающей на каталог; возвращаетFalse, если запись является или указывает на любой другой тип файла, или если она больше не существует.Если follow_symlinks имеет значение
False, возвращаетTrue, только если эта запись является каталогом (без перехода по символическим ссылкам); возвращаетFalse, если запись является файлом любого другого типа или если она больше не существует.Результат кэшируется в объекте
os.DirEntry, с отдельным кэшем для follow_symlinksTrueиFalse. Вызовитеos.stat()вместе сstat.S_ISDIR()для получения актуальной информации.При первом (некэшированном) вызове системный вызов не требуется в большинстве случаев. В частности, для несимволических ссылок ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN. Если запись является символической ссылкой, системный вызов потребуется для перехода по ссылке, если только follow_symlinks не равенFalse.Этот метод может вызвать
OSError, напримерPermissionError, ноFileNotFoundErrorперехватывается и не выбрасывается.
-
is_file(*, follow_symlinks=True)¶ Возвращает
True, если эта запись является файлом или символической ссылкой, указывающей на файл; возвращаетFalse, если запись является или указывает на каталог или другую запись, не являющуюся файлом, или если она больше не существует.Если follow_symlinks имеет значение
False, возвращаетTrue, только если эта запись является файлом (без перехода по символическим ссылкам); возвращаетFalse, если запись является каталогом или другой записью, не являющейся файлом, или если она больше не существует.Результат кэшируется в объекте
os.DirEntry. Кэширование, выполненные системные вызовы и возникшие исключения обрабатываются в соответствии сis_dir().
-
is_symlink()¶ Возвращает
True, если эта запись является символической ссылкой (даже битой); возвращаетFalse, если запись указывает на каталог или любой файл, или если она больше не существует.Результат кэшируется в объекте
os.DirEntry. Вызовитеos.path.islink(), чтобы получить актуальную информацию.При первом некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN.Этот метод может вызвать
OSError, напримерPermissionError, ноFileNotFoundErrorперехватывается и не выбрасывается.
-
stat(*, follow_symlinks=True)¶ Возвращает объект
stat_resultдля этой записи. По умолчанию этот метод следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргументfollow_symlinks=False.В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова, только если follow_symlinks равен
True, а запись является точкой повторной обработки (например, символической ссылкой или junction-точкой каталога).В Windows атрибуты
st_ino,st_devиst_nlinkобъектаstat_resultвсегда равны нулю. Вызовитеos.stat(), чтобы получить эти атрибуты.Результат кэшируется в объекте
os.DirEntry, с отдельным кэшем для follow_symlinksTrueиFalse. Вызовитеos.stat(), чтобы получить актуальную информацию.
Следует отметить, что между некоторыми атрибутами и методами
os.DirEntryиpathlib.Pathсуществует хорошее соответствие. В частности, атрибутnameимеет тот же смысл, что и методыis_dir(),is_file(),is_symlink()иstat().Новое в версии 3.5.
-
-
os.stat(path, *, dir_fd=None, follow_symlinks=True)¶ Получить статус файла или файлового дескриптора. Выполняет эквивалент системного вызова
stat()для заданного пути. path может быть задан как строка или байты – напрямую или косвенно через интерфейсPathLike– или как открытый файловый дескриптор. Возвращает объектstat_result.Эта функция обычно следует символическим ссылкам; чтобы получить stat символической ссылки, добавьте аргумент
follow_symlinks=Falseили используйтеlstat().Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
В Windows передача
follow_symlinks=Falseотключает следование всем surrogate-точкам повторной обработки, включая символические ссылки и junction-точки каталогов. Другие типы точек повторной обработки, не похожие на ссылки или которые операционная система не может обработать, будут открыты напрямую. При следовании по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая предотвратила полный обход. Чтобы получить результаты stat для конечного пути в этом случае, используйте функциюos.path.realpath()для разрешения имени пути насколько это возможно и вызовитеlstat()для результата. Это не относится к битым символическим ссылкам или junction-точкам, которые вызывают обычные исключения.Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Новое в версии 3.3: Добавлены аргументы dir_fd и follow_symlinks, позволяющие указывать файловый дескриптор вместо пути.
Изменено в версии 3.6: Принимает объект, подобный пути.
Изменено в версии 3.8: В Windows теперь обрабатываются все точки повторной обработки, которые может разрешить операционная система, а передача
follow_symlinks=Falseотключает следование всем surrogate-точкам повторной обработки. Если операционная система достигает точки повторной обработки, которую не может обработать, stat теперь возвращает информацию для исходного пути, как если бы был указанfollow_symlinks=False, вместо вызова ошибки.
-
class
os.stat_result¶ Объект, атрибуты которого примерно соответствуют членам структуры
stat. Используется для результатаos.stat(),os.fstat()иos.lstat().Атрибуты:
-
st_mode¶ Режим файла: тип файла и биты режима (права доступа).
-
st_ino¶ Зависит от платформы, но если не равно нулю, однозначно идентифицирует файл для заданного значения
st_dev. Обычно:номер inode в Unix,
индекс файла на Windows
-
st_dev¶ Идентификатор устройства, на котором находится этот файл.
-
st_nlink¶ Количество жёстких ссылок.
-
st_uid¶ Идентификатор пользователя-владельца файла.
-
st_gid¶ Идентификатор группы владельца файла.
-
st_size¶ Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки – это длина содержащегося в ней имени пути без завершающего нулевого байта.
Временные метки:
-
st_atime¶ Время последнего доступа, выраженное в секундах.
-
st_mtime¶ Время последнего изменения содержимого, выраженное в секундах.
-
st_ctime¶ Зависит от платформы:
время последнего изменения метаданных в Unix,
время создания в Windows, выраженное в секундах.
-
st_atime_ns¶ Время последнего доступа, выраженное в наносекундах в виде целого числа.
-
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, если в файле есть дырки (holes).
-
st_blksize¶ «Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл блоками меньшего размера может привести к неэффективному чтению-изменению-перезаписи (read-modify-rewrite).
-
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наsupports_dir_fd. Например, это выражение вычисляется вTrue, еслиos.stat()принимает открытые файловые дескрипторы для dir_fd на локальной платформе:os.stat in os.supports_dir_fd
В настоящее время параметры dir_fd работают только на платформах Unix; ни один из них не работает на Windows.
Новое в версии 3.3.
-
os.supports_effective_ids¶ Объект
set, указывающий, разрешает лиos.access()указыватьTrueдля своего параметра effective_ids на локальной платформе. (УказаниеFalseдля effective_ids всегда поддерживается на всех платформах.) Если локальная платформа это поддерживает, коллекция будет содержатьos.access(); в противном случае она будет пуста.Это выражение вычисляется в
True, еслиos.access()поддерживаетeffective_ids=Trueна локальной платформе:os.access in os.supports_effective_ids
В настоящее время effective_ids поддерживается только на платформах Unix; он не работает на Windows.
Новое в версии 3.3.
-
os.supports_fd¶ Объект
set, указывающий, какие функции в модулеosразрешают указывать свой параметр path как открытый файловый дескриптор на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для принятия открытых файловых дескрипторов в качестве аргументов path, доступна не на всех платформах, поддерживаемых Python.Чтобы определить, разрешает ли конкретная функция указывать открытый файловый дескриптор для своего параметра path, используйте оператор
inнаsupports_fd. Например, это выражение вычисляется вTrue, еслиos.chdir()принимает открытые файловые дескрипторы для path на локальной платформе:os.chdir in os.supports_fd
Новое в версии 3.3.
-
os.supports_follow_symlinks¶ Объект
set, указывающий, какие функции в модулеosпринимаютFalseдля своего параметра follow_symlinks на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации follow_symlinks, недоступна на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать follow_symlinks, всегда позволяют указывать этот параметр, но выбрасывают исключение, если функциональность используется, когда она недоступна локально. (УказаниеTrueдля follow_symlinks всегда поддерживается на всех платформах.)Чтобы проверить, принимает ли конкретная функция
Falseдля своего параметра follow_symlinks, используйте операторinнаsupports_follow_symlinks. Например, это выражение вычисляется вTrue, если вы можете указатьfollow_symlinks=Falseпри вызовеos.stat()на локальной платформе:os.stat in os.supports_follow_symlinks
Новое в версии 3.3.
-
os.symlink(src, dst, target_is_directory=False, *, dir_fd=None)¶ Создает символическую ссылку, указывающую на src с именем dst.
В Windows символическая ссылка представляет собой либо файл, либо каталог и не изменяется динамически под цель. Если цель существует, тип символической ссылки будет создан соответствующим. В противном случае символическая ссылка будет создана как каталог, если target_is_directory равен
True, или как файловая ссылка (по умолчанию) в противном случае. На платформах, отличных от Windows, параметр target_is_directory игнорируется.Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Примечание
В новых версиях Windows 10 непривилегированные учетные записи могут создавать символические ссылки, если включен режим разработчика. Если режим разработчика недоступен или не включен, требуется привилегия SeCreateSymbolicLinkPrivilege, или процесс должен быть запущен от имени администратора.
OSErrorвозникает, когда функция вызывается непривилегированным пользователем.Вызывает событие аудита
os.symlinkс аргументамиsrc,dst,dir_fd.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Новое в версии 3.3: Добавлен аргумент dir_fd, и теперь target_is_directory доступен на платформах, отличных от Windows.
Изменено в версии 3.6: Принимает объект, подобный пути для src и dst.
Изменено в версии 3.8: Добавлена поддержка непривилегированных символических ссылок в Windows с режимом разработчика.
-
os.sync()¶ Принудительная запись всех данных на диск.
Доступность: Unix.
Новое в версии 3.3.
-
os.truncate(path, length)¶ Усекает файл, соответствующий path, так, чтобы его размер не превышал length байт.
Эта функция может поддерживать указание файлового дескриптора.
Возбуждает событие аудита
os.truncateс аргументамиpath,length.Доступность: Unix, Windows.
Новое в версии 3.3.
Изменено в версии 3.5: Добавлена поддержка Windows
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.unlink(path, *, dir_fd=None)¶ Удаляет файл path. Эта функция семантически идентична
remove(); имяunlink– это её традиционное имя в Unix. Подробнее см. документациюremove().Возбуждает событие аудита
os.removeс аргументамиpath,dir_fd.Новое в версии 3.3: Параметр dir_fd.
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶ Устанавливает время доступа и изменения файла, указанного в path.
utime()принимает два необязательных параметра: times и ns. Они задают время, устанавливаемое для path, и используются следующим образом:Если указан ns, то это должен быть кортеж из двух элементов вида
(atime_ns, mtime_ns), где каждый элемент – целое число, выражающее наносекунды.Если times не равен
None, то это должен быть кортеж из двух элементов вида(atime, mtime), где каждый элемент – int или float, выражающий секунды.Если times равен
None, а ns не указан, то это эквивалентно указаниюns=(atime_ns, mtime_ns), где оба времени равны текущему времени.
Указывать кортежи одновременно для times и ns – ошибка.
Обратите внимание, что точное время, которое вы здесь задаёте, может не возвращаться последующим вызовом
stat()в зависимости от разрешения, с которым ваша операционная система записывает время доступа и модификации; см.stat(). Лучший способ сохранить точное время – использовать поля st_atime_ns и st_mtime_ns из объекта результатаos.stat()с параметром ns функции utime.Эта функция поддерживает указание файлового дескриптора, пути относительно дескрипторов каталогов и не следование по символьным ссылкам.
Возбуждает событие аудита
os.utimeс аргументамиpath,times,ns,dir_fd.Новое в версии 3.3: Добавлена поддержка указания path в виде открытого файлового дескриптора, а также параметров dir_fd, follow_symlinks и ns.
Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.walk(top, topdown=True, onerror=None, followlinks=False)¶ Генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. Для каждого каталога в дереве с корнем в каталоге top (включая сам top) возвращает кортеж из трех элементов
(dirpath, dirnames, filenames).dirpath – строка, путь к каталогу. dirnames – список имён подкаталогов внутри dirpath (за исключением
'.'и'..'). filenames – список имён некаталожных файлов в dirpath. Обратите внимание, что имена в списках не содержат компонент пути. Чтобы получить полный путь (начинающийся с top) к файлу или каталогу в dirpath, используйтеos.path.join(dirpath, name). Упорядочены списки или нет, зависит от файловой системы. Если во время построения списков из каталога dirpath удаляется или добавляется файл, то не определено, будет ли имя этого файла включено.Если необязательный аргумент topdown равен
Trueили не указан, тройка для каталога генерируется до троек для всех его подкаталогов (каталоги обходятся сверху вниз). Если topdown равенFalse, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги обходятся снизу вверх). Независимо от значения topdown, список подкаталогов извлекается до того, как генерируются кортежи для каталога и его подкаталогов.Когда topdown равен
True, вызывающий код может изменить список dirnames на месте (возможно, используяdelили присваивание срезу), иwalk()будет рекурсивно обходить только те подкаталоги, имена которых остались в dirnames; это можно использовать для обрезания дерева поиска, задания определенного порядка обхода или даже для уведомленияwalk()о каталогах, которые вызывающий код создает или переименовывает до того, какwalk()возобновит работу. Изменение dirnames, когда topdown равенFalse, не влияет на поведение обхода, потому что в режиме снизу вверх каталоги в dirnames генерируются до того, как генерируется сам dirpath.По умолчанию ошибки из вызова
scandir()игнорируются. Если указан необязательный аргумент onerror, это должна быть функция; она будет вызвана с одним аргументом – экземпляромOSError. Она может сообщить об ошибке, чтобы продолжить обход, или возбудить исключение, чтобы прервать обход. Обратите внимание, что имя файла доступно как атрибутfilenameобъекта исключения.По умолчанию
walk()не будет спускаться в символические ссылки, ведущие к каталогам. Установите followlinks вTrue, чтобы посещать каталоги, на которые указывают симлинки, в системах, поддерживающих их.Примечание
Имейте в виду, что установка followlinks в
Trueможет привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя.walk()не отслеживает уже посещенные каталоги.Примечание
Если передается относительный путь, не следует изменять текущий рабочий каталог между возобновлениями
walk().walk()никогда не меняет текущий каталог и предполагает, что и его вызывающий код этого не делает.В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере (простая реализация
shutil.rmtree()) обход дерева снизу вверх обязателен:rmdir()не позволяет удалить каталог, пока он не пуст:# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
Изменено в версии 3.5: Эта функция теперь вызывает
os.scandir()вместоos.listdir(), что делает её быстрее за счет сокращения количества вызововos.stat().Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None)¶ Это работает точно так же, как и
walk(), за исключением того, что возвращает 4-кортеж(dirpath, dirnames, filenames, dirfd), и поддерживаетdir_fd.dirpath, dirnames и filenames идентичны выводу
walk(), а dirfd – это файловый дескриптор, указывающий на каталог dirpath.This function always supports paths relative to directory descriptors and not following symlinks. Note however that, unlike other functions, the
fwalk()default value for follow_symlinks isFalse.Примечание
Поскольку
fwalk()возвращает файловые дескрипторы, они действительны только до следующего шага итерации, поэтому их следует дублировать (например, с помощьюdup()), если нужно сохранить их дольше.В этом примере показано количество байтов, занимаемых файлами (не каталогами) в каждом каталоге внутри начального каталога, при этом он не заглядывает ни в один подкаталог CVS:
import os for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): print(root, "consumes", end="") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end="") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # не заходить в CVS-каталоги
В следующем примере обход дерева снизу вверх необходим:
rmdir()не позволяет удалить каталог, пока он не пуст:# Удалить всё, доступное из каталога с именем "top", # при условии отсутствия символических ссылок. # ВНИМАНИЕ: это опасно! Например, если top == '/', это # может удалить все ваши файлы на диске. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)
Доступность: 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¶Linux extended attributes
Новое в версии 3.3.
Все эти функции доступны только в Linux.
-
os.getxattr(path, attribute, *, follow_symlinks=True)¶ Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть bytes или str (напрямую или косвенно через интерфейс
PathLike). Если это str, он кодируется с использованием кодировки файловой системы.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Возбуждает событие аудита
os.getxattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
-
os.listxattr(path=None, *, follow_symlinks=True)¶ Возвращает список расширенных атрибутов файловой системы для path. Атрибуты в списке представлены в виде строк, декодированных с использованием кодировки файловой системы. Если path равен
None,listxattr()будет исследовать текущий каталог.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Вызывает событие аудита
os.listxattrс аргументомpath.Изменено в версии 3.6: Принимает объект, подобный пути.
-
os.removexattr(path, attribute, *, follow_symlinks=True)¶ Удаляет расширенный атрибут файловой системы attribute из path. attribute должен быть bytes или str (напрямую или косвенно через интерфейс
PathLike). Если это строка, она кодируется с помощью кодировки файловой системы.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Возбуждает событие аудита
os.removexattrс аргументамиpath,attribute.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
-
os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True)¶ Устанавливает расширенный атрибут файловой системы attribute для path в значение value. attribute должен быть bytes или str без встроенных NUL (напрямую или косвенно через интерфейс
PathLike). Если это str, она кодируется с помощью кодировки файловой системы. flags может бытьXATTR_REPLACEилиXATTR_CREATE. Если указанXATTR_REPLACE, а атрибут не существует, будет возбужденоENODATA. Если указанXATTR_CREATE, а атрибут уже существует, атрибут не будет создан и будет возбужденоEEXISTS.Эта функция поддерживает указание файлового дескриптора и отказ от следования симлинкам.
Примечание
В версиях ядра Linux до 2.6.39 ошибка приводила к игнорированию аргумента flags в некоторых файловых системах.
Возбуждает событие аудита
os.setxattrс аргументамиpath,attribute,value,flags.Изменено в версии 3.6: Принимает объект, подобный пути для path и attribute.
-
os.XATTR_SIZE_MAX¶ Максимальный размер значения расширенного атрибута. В настоящее время на Linux это 64 КиБ.
-
os.XATTR_CREATE¶ Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна создать атрибут.
-
os.XATTR_REPLACE¶ Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна заменить существующий атрибут.
Управление процессами¶Process Management
Эти функции можно использовать для создания процессов и управления ими.
Различные функции exec* принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый аргумент передаётся новой программе как её собственное имя, а не как аргумент, который пользователь мог бы ввести в командной строке. Для программиста на C это argv[0], передаваемый в main() программы. Например, os.execv('/bin/echo',
['foo', 'bar']) выведет на стандартный вывод только bar; foo будет проигнорирован.
-
os.abort()¶ Генерирует сигнал
SIGABRTдля текущего процесса. На Unix поведение по умолчанию – создание дампа памяти; на Windows процесс немедленно возвращает код завершения3. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный дляSIGABRTс помощьюsignal.signal().
-
os.add_dll_directory(path)¶ Добавляет путь в путь поиска DLL.
Этот путь поиска используется при разрешении зависимостей для импортируемых модулей расширения (сам модуль разрешается через sys.path), а также
ctypes.Удалите каталог, вызвав close() для возвращённого объекта или используя его в выражении
with.Смотрите документацию Microsoft для получения дополнительной информации о загрузке DLL.
Вызывает событие аудита
os.add_dll_directoryс аргументомpath.Доступность: Windows.
Новое в версии 3.8: в предыдущих версиях CPython разрешение DLL выполнялось с использованием стандартного поведения текущего процесса. Это приводило к несостыковкам: например, поиск иногда происходил только в
PATHили в текущем рабочем каталоге, а системные функции вродеAddDllDirectoryне оказывали влияния.В версии 3.8 два основных способа загрузки DLL теперь явно переопределяют поведение на уровне процесса для обеспечения согласованности. Смотрите примечания по переносу для информации об обновлении библиотек.
-
os.execl(path, arg0, arg1, ...)¶ -
os.execle(path, arg0, arg1, ..., env)¶ -
os.execlp(file, arg0, arg1, ...)¶ -
os.execlpe(file, arg0, arg1, ..., env)¶ -
os.execv(path, args)¶ -
os.execve(path, args, env)¶ -
os.execvp(file, args)¶ -
os.execvpe(file, args, env)¶ Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращают управление. В Unix новый исполняемый файл загружается в текущий процесс и получает тот же идентификатор процесса, что и вызывающий. Ошибки сообщаются как исключения
OSError.Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не сбрасываются, поэтому если на этих открытых файлах могут быть буферизованные данные, следует сбросить их с помощью
sys.stdout.flush()илиos.fsync()перед вызовом функцииexec*.Варианты с буквами «l» и «v» функций
exec*различаются способом передачи аргументов командной строки. Варианты «l», пожалуй, проще в использовании, если количество параметров фиксировано на момент написания кода: отдельные параметры просто становятся дополнительными аргументами функцийexecl*(). Варианты «v» удобны, когда количество параметров переменное: аргументы передаются в виде списка или кортежа как параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, хотя это и не принудительно.Варианты, содержащие "p" ближе к концу (
execlp(),execlpe(),execvp()иexecvpe()), используют переменную окруженияPATHдля поиска файла программы. При замене окружения (с помощью одного из вариантовexec*e, обсуждаемых в следующем абзаце) новая среда используется как источник переменнойPATH. Остальные варианты,execl(),execle(),execv()иexecve(), не используют переменнуюPATHдля поиска исполняемого файла; path должен содержать правильный абсолютный или относительный путь.Для
execle(),execlpe(),execve()иexecvpe()(обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, используемым для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функцииexecl(),execlp(),execv()иexecvp()заставляют новый процесс наследовать окружение текущего процесса.Для
execve()на некоторых платформах path также может быть указан в виде открытого файлового дескриптора. Эта функциональность может не поддерживаться на вашей платформе; можно проверить, доступна ли она, с помощьюos.supports_fd. Если она недоступна, её использование вызоветNotImplementedError.Вызывает событие аудита
os.execс аргументамиpath,args,env.Доступность: Unix, Windows.
Новое в версии 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. Версияkill()для Windows дополнительно принимает дескрипторы процессов для завершения.См. также
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 библиотеки C
posix_spawn()для использования из Python.Большинству пользователей следует использовать
subprocess.run()вместоposix_spawn().Позиционные аргументы path, args и env аналогичны
execve().Параметр path – это путь к исполняемому файлу. path должен содержать каталог. Используйте
posix_spawnp()для передачи исполняемого файла без каталога.Аргумент file_actions может быть последовательностью кортежей, описывающих действия над определёнными файловыми дескрипторами в дочернем процессе между шагами
fork()иexec()реализации библиотеки C. Первый элемент каждого кортежа должен быть одним из трёх индикаторов типа, перечисленных ниже, описывающих остальные элементы кортежа:-
os.POSIX_SPAWN_OPEN¶ (
os.POSIX_SPAWN_OPEN, fd, path, flags, mode)Выполняет
os.dup2(os.open(path, flags, mode), fd).
-
os.POSIX_SPAWN_CLOSE¶ (
os.POSIX_SPAWN_CLOSE, fd)Выполняет
os.close(fd).
-
os.POSIX_SPAWN_DUP2¶ (
os.POSIX_SPAWN_DUP2, fd, new_fd)Выполняет
os.dup2(fd, new_fd).
Эти кортежи соответствуют вызовам API библиотеки C
posix_spawn_file_actions_addopen(),posix_spawn_file_actions_addclose()иposix_spawn_file_actions_adddup2(), которые используются для подготовки самого вызоваposix_spawn().Аргумент setpgroup устанавливает группу процессов дочернего процесса в указанное значение. Если указано значение 0, идентификатор группы процессов дочернего процесса будет равен его идентификатору процесса. Если значение setpgroup не задано, дочерний процесс наследует идентификатор группы процессов родительского процесса. Этот аргумент соответствует флагу
POSIX_SPAWN_SETPGROUPбиблиотеки C.Если аргумент resetids равен
True, он сбрасывает эффективные UID и GID дочернего процесса в реальные UID и GID родительского процесса. Если аргумент равенFalse, дочерний процесс сохраняет эффективные UID и GID родителя. В любом случае, если на исполняемом файле установлены биты разрешений set-user-ID и set-group-ID, их действие переопределит настройку эффективных UID и GID. Этот аргумент соответствует флагуPOSIX_SPAWN_RESETIDSбиблиотеки C.Если аргумент setsid равен
True, будет создан новый идентификатор сессии для posix_spawn. setsid требует флагPOSIX_SPAWN_SETSIDилиPOSIX_SPAWN_SETSID_NP. В противном случае возбуждаетсяNotImplementedError.Аргумент setsigmask устанавливает маску сигналов в указанный набор. Если параметр не используется, дочерний процесс наследует маску сигналов родителя. Этот аргумент соответствует флагу
POSIX_SPAWN_SETSIGMASKбиблиотеки C.Аргумент sigdef сбрасывает диспозицию всех сигналов в указанном наборе. Этот аргумент соответствует флагу
POSIX_SPAWN_SETSIGDEFбиблиотеки C.Аргумент scheduler должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр
sched_paramс параметрами планировщика. ЗначениеNoneна месте политики планировщика указывает, что она не предоставлена. Этот аргумент является комбинацией флаговPOSIX_SPAWN_SETSCHEDPARAMиPOSIX_SPAWN_SETSCHEDULERбиблиотеки C.Вызывает событие аудита
os.posix_spawnс аргументамиpath,argv,env.Новое в версии 3.8.
Доступность: Unix.
-
-
os.posix_spawnp(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶ Обёртка для API библиотеки C
posix_spawnp()для использования из Python.Аналогичен
posix_spawn(), за исключением того, что система ищет исполняемый файл executable в списке каталогов, заданных переменной окруженияPATH(так же, как и дляexecvp(3)).Вызывает событие аудита
os.posix_spawnс аргументамиpath,argv,env.Новое в версии 3.8.
Доступность: См.
posix_spawn()документацию.
-
os.register_at_fork(*, before=None, after_in_parent=None, after_in_child=None)¶ Регистрирует вызываемые объекты, которые будут выполнены при порождении нового дочернего процесса с помощью
os.fork()или аналогичных API клонирования процессов. Параметры являются необязательными и только именованными. Каждый задаёт свою точку вызова.before – функция, вызываемая перед порождением дочернего процесса.
after_in_parent – функция, вызываемая из родительского процесса после порождения дочернего процесса.
after_in_child – функция, вызываемая из дочернего процесса.
Эти вызовы выполняются только в том случае, если ожидается возврат управления в интерпретатор Python. Типичный запуск
subprocessне вызовет их, так как дочерний процесс не будет возвращаться в интерпретатор.Функции, зарегистрированные для выполнения перед порождением, вызываются в обратном порядке регистрации. Функции, зарегистрированные для выполнения после порождения (как в родителе, так и в дочернем процессе), вызываются в порядке регистрации.
Обратите внимание, что вызовы
fork(), выполняемые сторонним кодом на C, могут не вызывать эти функции, если только он явно не вызываетPyOS_BeforeFork(),PyOS_AfterFork_Parent()иPyOS_AfterFork_Child().Невозможно отменить регистрацию функции.
Доступность: Unix.
Добавлено в версии 3.7.
-
os.spawnl(mode, path, ...)¶ -
os.spawnle(mode, path, ..., env)¶ -
os.spawnlp(mode, file, ...)¶ -
os.spawnlpe(mode, file, ..., env)¶ -
os.spawnv(mode, path, args)¶ -
os.spawnve(mode, path, args, env)¶ -
os.spawnvp(mode, file, args)¶ -
os.spawnvpe(mode, file, args, env)¶ Выполняет программу path в новом процессе.
(Обратите внимание, что модуль
subprocessпредоставляет более мощные средства для создания новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно см. раздел Замена старых функций модулем subprocess.)Если mode равен
P_NOWAIT, эта функция возвращает идентификатор нового процесса; если mode равенP_WAIT, возвращает код выхода процесса, если он завершился нормально, или-signal, где signal – сигнал, который завершил процесс. В Windows идентификатор процесса на самом деле является дескриптором процесса, поэтому его можно использовать с функциейwaitpid().Примечание: в VxWorks эта функция не возвращает
-signal, когда новый процесс завершается. Вместо этого она вызывает исключение OSError.Варианты «l» и «v» функций
spawn*различаются способом передачи аргументов командной строки. Варианты «l», возможно, проще в использовании, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функцийspawnl*(). Варианты «v» удобны, когда количество параметров переменное, и аргументы передаются в виде списка или кортежа через параметр args. В любом случае, аргументы дочернего процесса должны начинаться с имени выполняемой команды.Варианты, содержащие вторую «p» в конце (
spawnlp(),spawnlpe(),spawnvp()иspawnvpe()), используют переменную окруженияPATHдля поиска программы file. При замене окружения (с помощью одного из вариантовspawn*e, обсуждаемых в следующем абзаце) новое окружение используется как источник переменнойPATH. Другие варианты,spawnl(),spawnle(),spawnv()иspawnve(), не используют переменнуюPATHдля поиска исполняемого файла; path должен содержать подходящий абсолютный или относительный путь.Для
spawnle(),spawnlpe(),spawnve()иspawnvpe()(обратите внимание, все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных окружения нового процесса (они используются вместо окружения текущего процесса); функцииspawnl(),spawnlp(),spawnv()иspawnvp()заставляют новый процесс наследовать окружение текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками; недопустимые ключи или значения приведут к ошибке функции с возвращаемым значением127.В качестве примера следующие вызовы
spawnlp()иspawnvpe()эквивалентны:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Возбуждает событие аудита
os.spawnс аргументамиmode,path,args,env.Доступность: Unix, Windows.
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, она должна быть «глаголом команды» (command verb), определяющим, что делать с файлом. Распространённые глаголы, задокументированные 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 не определяет значение возвращаемого значения функции Csystem(), поэтому возвращаемое значение функции 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) на Unix или GetProcessTimes в MSDN в Windows. В Windows известны только
userиsystem; остальные атрибуты равны нулю.Доступность: Unix, Windows.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на кортежеподобный объект с именованными атрибутами.
-
os.wait()¶ Ожидает завершения дочернего процесса и возвращает кортеж, содержащий его PID и индикатор статуса выхода: 16-битное число, младший байт которого – номер сигнала, завершившего процесс, а старший байт – статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл core.
Доступность: Unix.
-
os.waitid(idtype, id, options)¶ Ожидает завершения одного или нескольких дочерних процессов. idtype может быть
P_PID,P_PGIDилиP_ALL. id задаёт pid для ожидания. options формируется путём логического сложения (OR) одного или нескольких из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(), за исключением того, что не передается аргумент идентификатора процесса, а возвращается кортеж из трех элементов, содержащий идентификатор дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Обратитесь кresource.getrusage()для получения подробной информации об использовании ресурсов. Аргумент опции такой же, как тот, что используется вwaitpid()иwait4().Доступность: Unix.
-
os.wait4(pid, options)¶ Аналогично
waitpid(), за исключением того, что возвращается кортеж из трех элементов, содержащий идентификатор дочернего процесса, индикатор статуса завершения и информацию об использовании ресурсов. Обратитесь к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.
Интерфейс к планировщику¶Interface to the scheduler
Эти функции управляют тем, как операционная система выделяет процессу время CPU. Они доступны только на некоторых платформах Unix. За более подробной информацией обращайтесь к man-страницам Unix.
Новое в версии 3.3.
Следующие политики планирования доступны, если они поддерживаются операционной системой.
-
os.SCHED_OTHER¶ Политика планирования по умолчанию.
-
os.SCHED_BATCH¶ Политика планирования для процессов с интенсивными вычислениями, которая старается сохранить интерактивность на остальной части компьютера.
-
os.SCHED_IDLE¶ Политика планирования для фоновых задач с очень низким приоритетом.
-
os.SCHED_SPORADIC¶ Политика планирования для спорадических серверных программ.
-
os.SCHED_FIFO¶ Политика планирования «первым пришёл, первым обслужен».
-
os.SCHED_RR¶ Циклическая политика планирования.
-
os.SCHED_RESET_ON_FORK¶ Этот флаг можно объединить с любой другой политикой планирования с помощью ИЛИ. Когда процесс с установленным этим флагом порождает потомка, политика планирования и приоритет дочернего процесса сбрасываются на значения по умолчанию.
-
class
os.sched_param(sched_priority)¶ Этот класс представляет настраиваемые параметры планирования, используемые в
sched_setparam(),sched_setscheduler()иsched_getparam(). Он неизменяем.В настоящее время существует только один возможный параметр:
-
sched_priority¶ Приоритет планирования для политики планирования.
-
-
os.sched_get_priority_min(policy)¶ Возвращает минимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
-
os.sched_get_priority_max(policy)¶ Возвращает максимальное значение приоритета для policy. policy – одна из констант политик планирования, описанных выше.
-
os.sched_setscheduler(pid, policy, param)¶ Устанавливает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. policy – одна из констант политик планирования, описанных выше. param – экземпляр
sched_param.
-
os.sched_getscheduler(pid)¶ Возвращает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. Результат – одна из констант политик планирования, описанных выше.
-
os.sched_setparam(pid, param)¶ Устанавливает параметры планирования для процесса с PID pid. Значение pid, равное 0, означает текущий процесс. param – это экземпляр
sched_param.
-
os.sched_getparam(pid)¶ Возвращает параметры планирования в виде экземпляра
sched_paramдля процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
-
os.sched_rr_get_interval(pid)¶ Возвращает квант времени (round-robin) в секундах для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
-
os.sched_yield()¶ Добровольно освобождает процессор.
-
os.sched_setaffinity(pid, mask)¶ Ограничивает процесс с PID pid (или текущий процесс, если ноль) набором процессоров. Параметр mask – это итерируемый объект с целыми числами, представляющий набор процессоров, к которому следует привязать процесс.
-
os.sched_getaffinity(pid)¶ Возвращает набор процессоров, к которым ограничен процесс с PID pid (или текущий процесс, если ноль).
Различная системная информация¶Miscellaneous System Information
-
os.confstr(name)¶ Возвращает строковые значения системной конфигурации. name задаёт извлекаемое значение; это может быть строка – имя определённого системного значения; такие имена заданы в ряде стандартов (POSIX, Unix 95, Unix 98 и других). На некоторых платформах определены и дополнительные имена. Имена, известные хост-операционной системе, представлены в виде ключей словаря
confstr_names. Для тех переменных конфигурации, которых нет в этом отображении, также допускается передавать целое число в качестве name.Если значение конфигурации, указанное name, не определено, возвращается
None.Если name – строка и не известна, возбуждается исключение
ValueError. Если конкретное значение для name не поддерживается хост-системой, даже если оно присутствует вconfstr_names, возбуждается исключениеOSErrorсerrno.EINVALв качестве кода ошибки.Доступность: Unix.
-
os.confstr_names¶ Словарь, отображающий имена, принимаемые
confstr(), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.Доступность: Unix.
-
os.cpu_count()¶ Возвращает количество процессоров в системе. Возвращает
None, если не определено.Это число не равно количеству процессоров, которые текущий процесс может использовать. Количество доступных процессоров можно получить с помощью
len(os.sched_getaffinity(0))Новое в версии 3.4.
-
os.getloadavg()¶ Возвращает количество процессов в очереди выполнения системы, усреднённое за последние 1, 5 и 15 минут, или возбуждает исключение
OSError, если среднюю нагрузку получить не удалось.Доступность: Unix.
-
os.sysconf(name)¶ Возвращает целочисленные значения системной конфигурации. Если значение конфигурации, указанное name, не определено, возвращается
-1. Замечания относительно параметра name дляconfstr()применимы и здесь; словарь, предоставляющий информацию об известных именах, задаётсяsysconf_names.Доступность: Unix.
-
os.sysconf_names¶ Словарь, отображающий имена, принимаемые
sysconf(), в целочисленные значения, определённые для этих имён хост-операционной системой. Может использоваться для определения набора имён, известных системе.Доступность: Unix.
Следующие значения данных используются для поддержки операций с путями. Они определены для всех платформ.
Операции более высокого уровня с именами путей определены в модуле os.path.
-
os.curdir¶ Строковая константа, используемая операционной системой для обращения к текущему каталогу. Для Windows и POSIX это
'.'. Также доступна черезos.path.
-
os.pardir¶ Строковая константа, используемая операционной системой для обращения к родительскому каталогу. Для Windows и POSIX это
'..'. Также доступна черезos.path.
-
os.sep¶ Символ, используемый операционной системой для разделения компонентов пути. Для POSIX это
'/', а для Windows –'\\'. Имейте в виду, что одного знания этого символа недостаточно для разбора или объединения путей – используйтеos.path.split()иos.path.join(), – но иногда это бывает полезно. Также доступен черезos.path.
-
os.altsep¶ Альтернативный символ, используемый операционной системой для разделения компонентов пути, или
None, если существует только один символ-разделитель. В Windows, гдеsep– обратная косая черта, этот символ равен'/'. Также доступен черезos.path.
-
os.extsep¶ Символ, отделяющий основное имя файла от расширения; например,
'.'вos.py. Также доступен черезos.path.
-
os.pathsep¶ Символ, традиционно используемый операционной системой для разделения компонентов пути поиска (как в
PATH), например':'для POSIX или';'для Windows. Также доступен черезos.path.
-
os.defpath¶ Путь поиска по умолчанию, используемый
exec*p*иspawn*p*, если в окружении нет ключа'PATH'. Также доступен черезos.path.
-
os.linesep¶ Строка, используемая для разделения (вернее, завершения) строк на текущей платформе. Это может быть один символ, например
'\n'для POSIX, или несколько символов, например'\r\n'для Windows. Не используйте os.linesep в качестве символа конца строки при записи файлов, открытых в текстовом режиме (по умолчанию); вместо этого используйте одиночный'\n'на всех платформах.
-
os.devnull¶ Путь к нулевому устройству. Например:
'/dev/null'для POSIX,'nul'для Windows. Также доступен черезos.path.
-
os.RTLD_LAZY¶ -
os.RTLD_NOW¶ -
os.RTLD_GLOBAL¶ -
os.RTLD_LOCAL¶ -
os.RTLD_NODELETE¶ -
os.RTLD_NOLOAD¶ -
os.RTLD_DEEPBIND¶ Флаги для использования с функциями
setdlopenflags()иgetdlopenflags(). Смотрите страницу руководства Unix dlopen(3), чтобы узнать значение различных флагов.Новое в версии 3.3.
Случайные числа¶Random numbers
-
os.getrandom(size, flags=0)¶ Возвращает до size случайных байт. Функция может вернуть меньше байт, чем запрошено.
Эти байты можно использовать для начальной инициализации генераторов случайных чисел пользовательского пространства или для криптографических целей.
getrandom()полагается на энтропию, собранную от драйверов устройств и других источников шума окружения. Чрезмерное чтение больших объёмов данных негативно скажется на других пользователях устройств/dev/randomи/dev/urandom.Аргумент flags представляет собой битовую маску, которая может содержать ноль или более следующих значений, объединённых операцией OR:
os.GRND_RANDOMиGRND_NONBLOCK.См. также справочную страницу getrandom() в Linux.
Доступность: Linux 3.17 и новее.
Новое в версии 3.6.
-
os.urandom(size)¶ Возвращает строку из size случайных байтов, подходящих для криптографического использования.
Эта функция возвращает случайные байты из источника случайности, специфичного для ОС. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.
В Linux, если доступен системный вызов
getrandom(), он используется в блокирующем режиме: блокировка до инициализации пула энтропии urandom (ядро собирает 128 бит энтропии). Обоснование см. в PEP 524. В Linux функцияgetrandom()может использоваться для получения случайных байтов в неблокирующем режиме (с помощью флагаGRND_NONBLOCK) или для опроса до инициализации пула энтропии urandom.В Unix-подобных системах случайные байты читаются из устройства
/dev/urandom. Если устройство/dev/urandomнедоступно или нечитаемо, возбуждается исключениеNotImplementedError.В Windows используется
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/randomgetrandom()блокируется, если нет доступных случайных байтов, а при чтении из/dev/urandomблокируется, если пул энтропии ещё не инициализирован.Если установлен флаг
GRND_NONBLOCK, тоgetrandom()не блокируется в этих случаях, а вместо этого немедленно возбуждаетBlockingIOError.Новое в версии 3.6.
-
os.GRND_RANDOM¶ Если этот бит установлен, то случайные байты берутся из пула
/dev/randomвместо пула/dev/urandom.Новое в версии 3.6.