os — Разнообразные интерфейсы операционной системы
Исходный код: Lib/os.py
Этот модуль предоставляет портативный способ использования функциональности, зависящей от операционной системы. Если вам нужно только читать или записывать файл, см. open(), если вам нужно манипулировать путями, см. модуль os.path, а если вам нужно прочитать все строки во всех файлах из командной строки, см. модуль fileinput. Для создания временных файлов и каталогов см. модуль tempfile, а для работы с файлами и каталогами высокого уровня см. модуль shutil.
Примечания о доступности этих функций:
- Конструкция всех встроенных модулей, зависящих от операционной системы Python, такова, что, пока доступна одинаковая функциональность, она использует один и тот же интерфейс; например, функция
os.stat(path)возвращает информацию о статусе path в том же формате (который, к слову, происходит от интерфейса POSIX). - Расширения, специфичные для конкретной операционной системы, также доступны через модуль
os, но их использование, конечно, представляет угрозу для портативности. - Все функции, принимающие имена путей или файлов, принимают как байтовые, так и строковые объекты и возвращают объект того же типа, если возвращается путь или имя файла.
- Примечание «Доступность: Unix» означает, что эта функция обычно встречается в системах Unix. Она не дает никаких гарантий о ее существовании в конкретной операционной системе.
- Если не указано отдельно, все функции, утверждающие «Доступность: Unix», поддерживаются в Mac OS X, которая построена на основе ядра Unix.
Примечание
Все функции в этом модуле генерируют OSError в случае недопустимых или недоступных имён файлов и путей, или других аргументов, имеющих правильный тип, но не принимаемых операционной системой.
-
exception os.error -
Псевдоним встроенного исключения
OSError.
-
os.name -
Имя модуля, зависящего от операционной системы, который был импортирован. В настоящее время зарегистрированы следующие имена:
'posix','nt','ce','java'.См. также
sys.platformимеет более тонкую гранулярность.os.uname()предоставляет информацию о версии системы, зависящую от системы.Модуль
platformпредоставляет подробные проверки идентификации системы.
1. Имена файлов, аргументы командной строки и переменные окружения
В Python имена файлов, аргументы командной строки и переменные окружения представлены с помощью типа string. В некоторых системах требуется декодирование этих строк в байты и обратно перед передачей их операционной системе. Python использует кодировку файловой системы для выполнения этой конвертации (см. sys.getfilesystemencoding()).
Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может завершиться ошибкой. В этом случае Python использует обработчик ошибок кодирования surrogateescape, что означает, что нераспознаваемые байты заменяются символом Unicode U+DCxx при декодировании, а затем эти символы снова преобразуются в исходные байты при кодировании.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не предоставляет этой гарантии, функции API могут генерировать UnicodeErrors.
2. Параметры процесса
Эти функции и элементы данных предоставляют информацию и работают с текущим процессом и пользователем.
-
os.ctermid() -
Возвращает имя файла, соответствующее управляющему терминалу процесса.
Доступность: Unix.
-
os.environ -
Объект отображения, представляющий строковую среду. Например,
environ['HOME']— это путь к вашему домашнему каталогу (в некоторых платформах) и эквивалентенgetenv("HOME")в C.Это отображение фиксируется при первом импорте модуля
os, обычно во время запуска Python в рамках обработкиsite.py. Изменения в среде, внесённые после этого момента, не отражаются вos.environ, за исключением изменений, внесённых путём непосредственного измененияos.environ.Если платформа поддерживает функцию
putenv(), это отображение можно использовать для изменения среды, а также для запроса среды.putenv()будет вызвана автоматически при изменении отображения.В Unix ключи и значения используют
sys.getfilesystemencoding()и обработчик ошибок'surrogateescape'. Используйтеenvironb, если хотите использовать другую кодировку.Примечание
Прямое вызов
putenv()не изменяетos.environ, поэтому лучше изменятьos.environ.Примечание
В некоторых платформах, включая FreeBSD и Mac OS X, установка
environможет привести к утечке памяти. Обратитесь к документации системы поputenv().Если
putenv()не предоставлена, скопированная модифицированная копия этого отображения может быть передана соответствующим функциям создания процессов, чтобы дочерние процессы использовали изменённую среду.Если платформа поддерживает функцию
unsetenv(), вы можете удалить элементы из этого отображения, чтобы сбросить переменные среды.unsetenv()будет вызвана автоматически при удалении элемента изos.environ, а также при вызове одного из методовpop()илиclear().
-
os.environb -
Байтовая версия
environ: объект отображения, представляющий среду в виде байтовых строк.environиenvironbсинхронизированы (изменениеenvironbобновляетenviron, и наоборот).environbдоступен только еслиsupports_bytes_environравно True.Введено в версии 3.2.
-
os.chdir(path) -
os.fchdir(fd) -
os.getcwd() -
Эти функции описаны в разделе Файлы и каталоги.
-
os.fsencode(filename) -
Кодирует filename в кодировку файловой системы с обработчиком ошибок
'surrogateescape', или'strict'в Windows; возвращаетbytesбез изменений.fsdecode()— обратная функция.Введено в версии 3.2.
-
os.fsdecode(filename) -
Декодирует filename из кодировки файловой системы с обработчиком ошибок
'surrogateescape', или'strict'в Windows; возвращаетstrбез изменений.fsencode()— обратная функция.Введено в версии 3.2.
-
os.getenv(key, default=None) -
Возвращает значение переменной среды key, если она существует, или default, если нет. key, default и результат являются строками.
В Unix ключи и значения декодируются с использованием
sys.getfilesystemencoding()и обработчиком ошибок'surrogateescape'. Используйтеos.getenvb(), если хотите использовать другую кодировку.Доступность: большинство вариантов Unix, Windows.
-
os.getenvb(key, default=None) -
Возвращает значение переменной среды key, если она существует, или default, если нет. key, default и результат — байты.
getenvb()доступно только еслиsupports_bytes_environравно True.Доступность: большинство вариантов Unix.
Новая в версии 3.2.
-
os.get_exec_path(env=None) -
Возвращает список каталогов, которые будут проверяться при поиске исполняемого файла с заданным именем, подобно оболочке, при запуске процесса. Если задано env, это словарь переменных среды для поиска PATH. По умолчанию, если env равно
None, используетсяenviron.Новая в версии 3.2.
-
os.getegid() -
Возвращает эффективный идентификатор группы текущего процесса. Соответствует биту «установленный идентификатор» файла, выполняемого в текущем процессе.
Доступность: 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() -
Возвращает имя пользователя, вошедшего в систему на контролируемом терминале процесса. Для большинства целей более полезно использовать переменные среды
LOGNAMEилиUSERNAME, чтобы узнать, кто пользователь, илиpwd.getpwuid(os.getuid())[0], чтобы получить имя пользователя текущего действительного идентификатора пользователя.Доступность: Unix, Windows.
-
os.getpgid(pid) -
Возвращает идентификатор группы процессов процесса с идентификатором pid. Если pid равно 0, возвращается идентификатор группы процессов текущего процесса.
Доступность: Unix.
-
os.getpgrp() -
Возвращает идентификатор текущей группы процессов.
Доступность: Unix.
-
os.getpid() -
Возвращает идентификатор текущего процесса.
-
os.getppid() -
Возвращает идентификатор родительского процесса. Когда родительский процесс завершился, в Unix возвращается идентификатор процесса init (1), в Windows — тот же идентификатор, который может быть повторно использован другим процессом.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
-
os.getpriority(which, who) -
Получить приоритет планирования программы. Значение which равно одному из
PRIO_PROCESS,PRIO_PGRPилиPRIO_USER, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS, идентификатор группы процессов дляPRIO_PGRPи идентификатор пользователя дляPRIO_USER). Нулевое значение who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или действительный идентификатор пользователя вызывающего процесса.Доступность: Unix.
Новая в версии 3.3.
-
os.PRIO_PROCESS -
os.PRIO_PGRP -
os.PRIO_USER -
Параметры функций
getpriority()иsetpriority().Доступность: Unix.
Новая в версии 3.3.
-
os.getresuid() -
Возвращает кортеж (ruid, euid, suid), обозначающий действительные, эффективные и сохранённые идентификаторы пользователей текущего процесса.
Доступность: Unix.
Новая в версии 3.2.
-
os.getresgid() -
Возвращает кортеж (rgid, egid, sgid), обозначающий действительные, эффективные и сохранённые идентификаторы групп текущего процесса.
Доступность: Unix.
Новая в версии 3.2.
-
os.getuid() -
Возвращает действительный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.initgroups(username, gid) -
Вызывает системную функцию initgroups() для инициализации списка доступа к группам всеми группами, к которым принадлежит указанное имя пользователя, плюс указанный идентификатор группы.
Доступность: Unix.
Новая в версии 3.2.
-
os.putenv(key, value) -
Устанавливает переменную среды с именем key в строку value. Такие изменения среды влияют на дочерние процессы, запущенные с помощью
os.system(),popen()илиfork()иexecv().Доступность: большинство вариантов Unix, Windows.
Примечание
На некоторых платформах, включая FreeBSD и Mac OS X, установка
environможет привести к утечкам памяти. Обратитесь к системной документации для putenv.При поддержке
putenv(), присваивания элементам вos.environавтоматически переводятся в соответствующие вызовыputenv(); однако, вызовыputenv()не обновляютos.environ, поэтому предпочтительнее присваивать значения элементамos.environ.
-
os.setegid(egid) -
Установить эффективный идентификатор группы текущего процесса.
Доступность: Unix.
-
os.seteuid(euid) -
Установить эффективный идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.setgid(gid) -
Установить идентификатор группы текущего процесса.
Доступность: Unix.
-
os.setgroups(groups) -
Установить список дополнительных идентификаторов групп, связанных с текущим процессом, на groups. groups должен быть последовательностью, а каждый элемент должен быть целым числом, определяющим группу. Обычно эта операция доступна только суперпользователю.
Доступность: Unix.
Примечание
В Mac OS X длина groups может не превышать системно определённого максимального числа эффективных идентификаторов групп, обычно 16. См. документацию для
getgroups()в случаях, когда он может не возвращать тот же список групп, установленный вызовом setgroups().
-
os.setpgrp() -
Вызов системного вызова
setpgrp()илиsetpgrp(0, 0), в зависимости от реализованной версии (если есть). См. руководство Unix для семантики.Доступность: Unix.
-
os.setpgid(pid, pgrp) -
Вызов системного вызова
setpgid()для установки идентификатора группы процессов процесса с id pid на группу процессов с id pgrp. См. руководство Unix для семантики.Доступность: Unix.
-
os.setpriority(which, who, priority) -
Установить приоритет планирования программы. Значение which может быть одним из
PRIO_PROCESS,PRIO_PGRPилиPRIO_USER, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS, идентификатор группы процессов дляPRIO_PGRPи идентификатор пользователя дляPRIO_USER). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. priority — значение в диапазоне от -20 до 19. По умолчанию приоритет равен 0; более низкие приоритеты приводят к более благоприятному планированию.Доступность: Unix
Новая в версии 3.3.
-
os.setregid(rgid, egid) -
Установить реальный и эффективный идентификаторы группы текущего процесса.
Доступность: Unix.
-
os.setresgid(rgid, egid, sgid) -
Установить реальный, эффективный и сохранённый идентификаторы группы текущего процесса.
Доступность: Unix.
Новая в версии 3.2.
-
os.setresuid(ruid, euid, suid) -
Установить реальный, эффективный и сохранённый идентификаторы пользователя текущего процесса.
Доступность: Unix.
Новая в версии 3.2.
-
os.setreuid(ruid, euid) -
Установить реальный и эффективный идентификаторы пользователя текущего процесса.
Доступность: Unix.
-
os.getsid(pid) -
Вызов системного вызова
getsid(). См. руководство по Unix для семантики.Доступность: Unix.
-
os.setsid() -
Вызов системного вызова
setsid(). См. руководство по Unix для семантики.Доступность: Unix.
-
os.setuid(uid) -
Установить идентификатор пользователя текущего процесса.
Доступность: Unix.
-
os.strerror(code) -
Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где
strerror()возвращаетNULLпри указании неизвестного номера ошибки, возбуждаетсяValueError.
-
os.supports_bytes_environ -
Trueесли родной тип среды ОС — байты (например,Falseв Windows).Новая в версии 3.2.
-
os.umask(mask) -
Установить текущую числовую маску umask и вернуть предыдущую маску umask.
-
os.uname() -
Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение — объект с пятью атрибутами:
-
sysname— имя операционной системы -
nodename— имя машины в сети (определяется реализацией) -
release— выпуск операционной системы -
version— версия операционной системы -
machine— идентификатор оборудования
Для обратной совместимости этот объект также итерируемый, ведя себя как пятиэлементный кортеж, содержащий
sysname,nodename,release,version, иmachineв указанном порядке.Некоторые системы обрезают
nodenameдо 8 символов или до ведущего компонента; лучший способ получить имя хоста —socket.gethostname()или дажеsocket.gethostbyaddr(socket.gethostname()).Доступность: последние версии Unix.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на похожий на кортеж объект с именованными атрибутами.
-
-
os.unsetenv(key) -
Сбросить (удалить) переменную среды с именем key. Такие изменения среды влияют на дочерние процессы, запущенные с помощью
os.system(),popen()илиfork()иexecv().Когда
unsetenv()поддерживается, удаление элементов вos.environавтоматически преобразуется в соответствующий вызовunsetenv(); однако, вызовыunsetenv()не обновляютos.environ, поэтому предпочтительно удалять элементыos.environ.Доступность: большинство версий Unix, Windows.
3. Создание объектов файлов
Эта функция создаёт новые объекты файлов. (См. также open() для открытия дескрипторов файлов.)
-
os.fdopen(fd, *args, **kwargs) -
Возвращает открытый объект файла, связанный с дескриптором файла fd. Это псевдоним встроенной функции
open()и принимает те же аргументы. Единственное отличие состоит в том, что первый аргументfdopen()всегда должен быть целым числом.
4. Операции с дескрипторами файлов
Эти функции работают с потоками ввода-вывода, ссылающимися на дескрипторы файлов.
Дескрипторы файлов — небольшие целые числа, соответствующие файлу, открытому текущим процессом. Например, стандартный ввод обычно имеет дескриптор файла 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.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.
-
os.fchmod(fd, mode) -
Изменить режим файла, заданного fd, на числовой mode. См. документацию для
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(fd, mode).Доступность: Unix.
-
os.fchown(fd, uid, gid) -
Изменить владельца и группу файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов неизменным, установите его в -1. См.
chown(). Начиная с Python 3.3, это эквивалентноos.chown(fd, uid, gid).Доступность: Unix.
-
os.fdatasync(fd) -
Принудительная запись файла с дескриптором файла fd на диск. Не принуждает обновление метаданных.
Доступность: Unix.
Примечание
Эта функция недоступна в MacOS.
-
os.fpathconf(fd, name) -
Возвращает системную конфигурационную информацию, относящуюся к открытому файлу. name задаёт конфигурационное значение для извлечения; это может быть строка, представляющая имя определённого системного значения; эти имена указаны в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы также определяют дополнительные имена. Имена, известные операционной системе, приведены в словаре
pathconf_names. Для конфигурационных переменных, не включённых в эту карту, также принимается целое число для name.Если name — строка, и она неизвестна, поднимается исключение
ValueError. Если конкретное значение для name не поддерживается системой, даже если оно включено вpathconf_names, поднимается исключениеOSErrorс кодом ошибкиerrno.EINVAL.Начиная с Python 3.3, это эквивалентно
os.pathconf(fd, name).Доступность: Unix.
-
os.fstat(fd) -
Получение статуса дескриптора файла fd. Возвращает объект
stat_result.Начиная с Python 3.3, это эквивалентно
os.stat(fd).См. также
Функцию
stat().
-
os.fstatvfs(fd) -
Возвращает информацию о файловой системе, содержащей файл, связанный с дескриптором файла fd, как в
statvfs(). Начиная с Python 3.3, это эквивалентноos.statvfs(fd).Доступность: Unix.
-
os.fsync(fd) -
Принудительная запись файла с дескриптором fd на диск. В Unix, это вызывает системную функцию
fsync(); в Windows, функцию MS_commit().Если вы начинаете с буферизованного объекта Python объекта файла f, сначала выполните
f.flush(), а затемos.fsync(f.fileno()), чтобы убедиться, что все внутренние буферы, связанные с f, записаны на диск.Доступность: Unix, Windows.
-
os.ftruncate(fd, length) -
Усечение файла, соответствующего дескриптору файла fd, так что его размер не превышает length байт. Начиная с Python 3.3, это эквивалентно
os.truncate(fd, length).Доступность: 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 задаёт участок файла для блокировки.Доступность: Unix.
Добавлена в версии 3.3.
-
os.F_LOCK -
os.F_TLOCK -
os.F_ULOCK -
os.F_TEST -
Флаги, указывающие, какое действие выполнит функция
lockf().Доступность: Unix.
Добавлена в версии 3.3.
-
os.lseek(fd, pos, how) -
Установка текущей позиции дескриптора файла fd на позицию pos, модифицированную how:
SEEK_SETили0для установки позиции относительно начала файла;SEEK_CURили1для установки относительно текущей позиции;SEEK_ENDили2для установки относительно конца файла. Возвращает новую позицию курсора в байтах, начиная с начала.
-
os.SEEK_SET -
os.SEEK_CUR -
os.SEEK_END -
Параметры функции
lseek(). Их значения соответственно 0, 1 и 2.Добавлена в версии 3.3: Некоторые операционные системы могут поддерживать дополнительные значения, такие как
os.SEEK_HOLEилиos.SEEK_DATA.
-
os.open(path, flags, mode=0o777, *, dir_fd=None) -
Открывает файл path и устанавливает различные флаги в соответствии с flags и, возможно, его режим в соответствии с mode. При вычислении mode сначала вычитается текущее значение umask. Возвращает дескриптор файла для вновь открытого файла. Новый дескриптор файла является непередаваемым.
Описание значений флагов и режимов см. в документации C run-time; константы флагов (например,
O_RDONLYиO_WRONLY) определены в модулеos. В частности, в Windows для открытия файлов в двоичном режиме необходимо добавитьO_BINARY.Эта функция может поддерживать пути, относящиеся к дескрипторам каталогов с параметром dir_fd.
Изменено в версии 3.4: Новый дескриптор файла теперь непередаваемый.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию
open(), которая возвращает объект файла с методамиread()иwrite()(и многими другими). Чтобы обернуть дескриптор файла в объект файла, используйтеfdopen().Добавлена в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.5: Если системный вызов прерывается, а обработчик сигнала не вызывает исключение, функция теперь повторно пытается выполнить системный вызов вместо поднятия исключения
InterruptedError(см. PEP 475 для обоснования).
Следующие константы являются параметрами для параметра 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, buffersize, offset) -
Чтение из дескриптора файла fd в позиции offset. Читает до buffersize байт. Смещение файла остаётся неизменным.
Доступность: Unix.
Новое в версии 3.3.
-
os.pwrite(fd, str, offset) -
Запись bytestring в дескриптор файла fd с offset, оставляя смещение файла неизменным.
Доступность: Unix.
Новое в версии 3.3.
-
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.
readv()будет передавать данные в каждый буфер до его заполнения, а затем переходить к следующему буферу в последовательности для хранения остальной части данных.readv()возвращает общее количество прочитанных байт (что может быть меньше, чем общая ёмкость всех объектов).Доступность: Unix.
Новое в версии 3.3.
-
os.tcgetpgrp(fd) -
Возвращает группу процессов, связанную с терминалом, заданным fd (открытый дескриптор файла, возвращаемый
os.open()).Доступность: Unix.
-
os.tcsetpgrp(fd, pg) -
Устанавливает группу процессов, связанную с терминалом, заданным fd (открытый дескриптор файла, возвращаемый
os.open()), на pg.Доступность: Unix.
-
os.ttyname(fd) -
Возвращает строку, которая определяет устройство терминала, связанное с дескриптором файла fd. Если fd не связан с устройством терминала, возникает исключение.
Доступность: Unix.
-
os.write(fd, str) -
Записывает байтовую строку в str в дескриптор файла fd. Возвращает количество байт, которые фактически были записаны.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, возвращаемому
os.open()илиpipe(). Для записи «объекта файла», возвращаемого встроенной функциейopen()илиpopen()илиfdopen(), илиsys.stdoutилиsys.stderr, используйте его методwrite().Изменено в версии 3.5: Если системный вызов прерывается, и обработчик сигнала не вызывает исключение, функция теперь повторно пытается выполнить системный вызов вместо того, чтобы вызывать исключение
InterruptedError(см. PEP 475 для обоснования).
-
os.writev(fd, buffers) -
Записывает содержимое buffers в дескриптор файла fd. buffers должно быть последовательностью объектов типа bytes. Буферы обрабатываются в порядке массива. Весь контент первого буфера записывается, прежде чем перейти ко второму и так далее. Операционная система может установить ограничение (значение sysconf() SC_IOV_MAX) на количество используемых буферов.
writev()записывает содержимое каждого объекта в дескриптор файла и возвращает общее количество записанных байтов.Доступность: Unix.
Добавлена в версии 3.3.
4.1. Определение размера терминала
Добавлена в версии 3.3.
-
os.get_terminal_size(fd=STDOUT_FILENO) -
Возвращает размер окна терминала как
(columns, lines), кортеж типаterminal_size.Необязательный аргумент
fd(по умолчаниюSTDOUT_FILENO, или стандартный вывод) указывает, какой дескриптор файла должен быть запрошен.Если дескриптор файла не подключен к терминалу, возникает
OSError.shutil.get_terminal_size()— это функция высокого уровня, которую обычно следует использовать,os.get_terminal_size— это низкоуровневая реализация.Доступность: Unix, Windows.
-
class os.terminal_size -
Подкласс кортежа, содержащий
(columns, lines)размер окна терминала.-
columns -
Ширина окна терминала в символах.
-
lines -
Высота окна терминала в символах.
-
4.2. Наследование дескрипторов файлов
Добавлена в версии 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.
5. Файлы и каталоги
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из этих функций:
-
указание дескриптора файла: Для некоторых функций аргумент path может быть не только строкой, задающей имя пути, но и дескриптором файла. Функция затем будет работать с файлом, на который ссылается дескриптор. (Для систем POSIX Python вызовет версию функции
f...).Вы можете проверить, поддерживается ли path как дескриптор файла на вашей платформе, используя
os.supports_fd. Если она недоступна, её использование вызоветNotImplementedError.Если функция также поддерживает аргументы dir_fd или follow_symlinks, то использование одного из них при передаче path как дескриптора файла является ошибкой.
-
пути, относящиеся к дескрипторам каталогов: Если dir_fd не равно
None, оно должно быть дескриптором файла, относящимся к каталогу, а путь для обработки должен быть относительным; путь будет тогда относительным к этому каталогу. Если путь абсолютный, dir_fd игнорируется. (Для систем POSIX Python вызовет версию функции...atилиf...at).Вы можете проверить, поддерживается ли dir_fd на вашей платформе, используя
os.supports_dir_fd. Если она недоступна, её использование вызоветNotImplementedError.
-
не следовать символичным ссылкам: Если follow_symlinks равно
False, и последний элемент пути для обработки является символичной ссылкой, функция будет обрабатывать саму символичную ссылку вместо файла, на который она указывает. (Для систем POSIX Python вызовет версию функцииl...).Вы можете проверить, поддерживается ли follow_symlinks на вашей платформе, используя
os.supports_follow_symlinks. Если она недоступна, её использование вызоветNotImplementedError.
-
os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True) -
Используйте реальные uid/gid для проверки доступа к path. Обратите внимание, что большинство операций используют эффективные uid/gid, поэтому эту функцию можно использовать в среде suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к path. mode должен быть
F_OKдля проверки существования path, или может быть результатом объединения по битовому ИЛИ одного или нескольких изR_OK,W_OKиX_OKдля проверки разрешений. ВозвращаетTrue, если доступ разрешен, иFalseв противном случае. См. страницу руководства Unix access(2) для получения дополнительной информации.Эта функция может поддерживать указание путей, относящихся к дескрипторам каталогов и не следовать символическим ссылкам.
Если effective_ids
True,access()будет выполнять проверки доступа, используя эффективные uid/gid вместо реальных uid/gid. effective_ids может быть не поддерживается вашей платформой; вы можете проверить, доступна ли она, используяos.supports_effective_ids. Если она недоступна, ее использование вызоветNotImplementedError.Примечание
Использование
access()для проверки того, авторизован ли пользователь, например, для открытия файла перед фактическим выполнением операции с помощьюopen(), создает уязвимость, потому что пользователь может использовать короткий промежуток времени между проверкой и открытием файла для его изменения. Лучше использовать методы EAFP. Например:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"лучше переписать как:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()Примечание
Операции ввода-вывода могут завершиться ошибкой, даже если
access()указывает на то, что они пройдут успешно, особенно для операций с файловыми системами сети, которые могут иметь семантику разрешений, выходящую за рамки обычной модели разрешений POSIX.Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.
-
os.F_OK -
os.R_OK -
os.W_OK -
os.X_OK -
Значения для передачи в качестве параметра mode функции
access()для проверки существования, возможности чтения, записи и выполнения path соответственно.
-
os.chdir(path) -
Изменить текущий рабочий каталог на path.
Эта функция может поддерживать указание дескриптора файла. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.
Добавлена в версии 3.3: Добавлена поддержка указания path как дескриптора файла на некоторых платформах.
-
os.chflags(path, flags, *, follow_symlinks=True) -
Установить флаги path на числовое значение flags. flags может принимать комбинацию (битовое ИЛИ) следующих значений (как определено в модуле
stat):stat.UF_NODUMPstat.UF_IMMUTABLEstat.UF_APPENDstat.UF_OPAQUEstat.UF_NOUNLINKstat.UF_COMPRESSEDstat.UF_HIDDENstat.SF_ARCHIVEDstat.SF_IMMUTABLEstat.SF_APPENDstat.SF_NOUNLINKstat.SF_SNAPSHOT
Эта функция может поддерживать не следовать символическим ссылкам.
Доступность: Unix.
Добавлена в версии 3.3: Аргумент follow_symlinks.
-
os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True) -
Изменить режим path на числовое значение mode. mode может принимать одно из следующих значений (как определено в модуле
stat) или комбинацию из них с помощью битового ИЛИ:stat.S_ISUIDstat.S_ISGIDstat.S_ENFMTstat.S_ISVTXstat.S_IREADstat.S_IWRITEstat.S_IEXECstat.S_IRWXUstat.S_IRUSRstat.S_IWUSRstat.S_IXUSRstat.S_IRWXGstat.S_IRGRPstat.S_IWGRPstat.S_IXGRPstat.S_IRWXOstat.S_IROTHstat.S_IWOTHstat.S_IXOTH
Эта функция может поддерживать указание дескриптора файла, путей, относящихся к дескрипторам каталогов и не следовать символическим ссылкам.
Примечание
Несмотря на то, что Windows поддерживает
chmod(), вы можете установить только флаг «только для чтения» файла с помощью него (через константыstat.S_IWRITEиstat.S_IREADили соответствующее целое значение). Все остальные биты игнорируются.Добавлена в версии 3.3: Добавлена поддержка указания path как открытого дескриптора файла, а также аргументов dir_fd и follow_symlinks.
-
os.chown(path, uid, gid, *, dir_fd=None, follow_symlinks=True) -
Изменить владельца и группу path на числовые uid и gid. Чтобы оставить одно из идентификаторов неизменным, установите его значение в -1.
Эта функция может поддерживать указание дескриптора файла, путей, относящихся к дескрипторам каталогов и не следовать символическим ссылкам.
См.
shutil.chown()для функции более высокого уровня, которая принимает имена дополнительно к числовым идентификаторам.Доступность: Unix.
Добавлена в версии 3.3: Добавлена поддержка указания открытого дескриптора файла для path, а также аргументов dir_fd и follow_symlinks.
-
os.chroot(path) -
Изменить корневой каталог текущего процесса на path.
Доступность: Unix.
-
os.fchdir(fd) -
Изменить текущий рабочий каталог на каталог, представленный дескриптором файла fd. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл. Начиная с Python 3.3, это эквивалентно
os.chdir(fd).Доступность: Unix.
-
os.getcwd() -
Возвращает строку, представляющую текущий рабочий каталог.
-
os.getcwdb() -
Возвращает строку байтов, представляющую текущий рабочий каталог.
-
os.lchflags(path, flags) -
Устанавливает флаги path в числовое значение flags, как в
chflags(), но не следует символичным ссылкам. Начиная с Python 3.3, это эквивалентноos.chflags(path, flags, follow_symlinks=False).Доступность: Unix.
-
os.lchmod(path, mode) -
Изменяет режим path на числовое значение mode. Если path — символическая ссылка, изменение происходит в отношении ссылки, а не целевого файла. См. документацию
chmod()для возможных значений mode. Начиная с Python 3.3, это эквивалентноos.chmod(path, mode, follow_symlinks=False).Доступность: Unix.
-
os.lchown(path, uid, gid) -
Изменяет владельца и группу path на числовые значения uid и gid. Данная функция не следует символичным ссылкам. Начиная с Python 3.3, это эквивалентно
os.chown(path, uid, gid, follow_symlinks=False).Доступность: Unix.
-
os.link(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True) -
Создаёт жёсткую ссылку, указывающую на src и именованную как dst.
Данная функция может поддерживать указание src_dir_fd и/или dst_dir_fd для задания путей, относящихся к дескрипторам каталогов, а также не следования символичным ссылкам.
Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
Добавлена в версии 3.3: Добавлены аргументы src_dir_fd, dst_dir_fd и follow_symlinks.
-
os.listdir(path='.') -
Возвращает список, содержащий имена записей в каталоге, заданном path. Список упорядочен произвольно и не включает специальные записи
'.'и'..', даже если они присутствуют в каталоге.path может быть типа
strили типаbytes. Если path типаbytes, имена файлов, возвращённые, также будут типаbytes; в остальных случаях они будут типаstr.Данная функция также может поддерживать указание дескриптора файла; дескриптор файла должен ссылаться на каталог.
Примечание
Для кодирования
strимён файлов вbytes, используйтеfsencode().См. также
Функция
scandir()возвращает записи каталога вместе с информацией об атрибутах файла, обеспечивая лучшую производительность для многих распространённых случаев использования.Изменено в версии 3.2: Параметр path стал необязательным.
Добавлена в версии 3.3: Добавлена поддержка указания открытого дескриптора файла для path.
-
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.
-
os.mkdir(path, mode=0o777, *, dir_fd=None) -
Создаёт каталог с именем path и числовым режимом mode.
Если каталог уже существует, генерируется исключение
FileExistsError.На некоторых системах mode игнорируется. В тех случаях, где он используется, сначала применяется текущее значение маски umask. Если установлены биты, кроме последних 9 (т.е. кроме последних 3 цифр в восьмеричном представлении mode), их значение зависит от платформы. На некоторых платформах они игнорируются, и вам следует явно вызвать
chmod()для их установки.Данная функция также может поддерживать пути, относящиеся к дескрипторам каталогов.
Также можно создавать временные каталоги; см. модуль
tempfileи функциюtempfile.mkdtemp().Добавлена в версии 3.3: Аргумент dir_fd.
-
os.makedirs(name, mode=0o777, exist_ok=False) -
Рекурсивная функция создания каталогов. Как
mkdir(), но создаёт все промежуточные каталоги, необходимые для размещения целевого каталога.Параметр mode передаётся в
mkdir(); см. описание mkdir() для интерпретации его значения.Если exist_ok равно
False(по умолчанию), исключениеOSErrorгенерируется, если целевой каталог уже существует.Примечание
makedirs()может работать некорректно, если элементы пути для создания включаютpardir(например, “..” в системах UNIX).Функция корректно обрабатывает пути UNC.
Добавлена в версии 3.2: Параметр exist_ok.
Изменено в версии 3.4.1: До Python 3.4.1, если exist_ok было
Trueи каталог существовал,makedirs()всё равно генерировало ошибку, если mode не соответствовал режиму существующего каталога. Поскольку такое поведение было невозможно безопасно реализовать, оно было удалено в Python 3.4.1. См. bpo-21082.
-
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.
-
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.
-
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.
-
os.pathconf_names -
Словарь, сопоставляющий имена, принятые функциями
pathconf()иfpathconf(), с целочисленными значениями, определёнными для этих имён операционной системой. Это может быть использовано для определения набора имён, известных системе.Доступность: Unix.
-
os.readlink(path, *, dir_fd=None) -
Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным именем пути; если он относительный, он может быть преобразован в абсолютный с помощью
os.path.join(os.path.dirname(path), result).Если path — строковый объект, результат также будет строковым объектом, и вызов может вызвать UnicodeDecodeError. Если path — объект типа байты, результат будет объектом типа байты.
Эта функция также может поддерживать пути, относительные к дескрипторам каталогов.
Доступность: Unix, Windows
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Добавлена в версии 3.3: Аргумент dir_fd.
-
os.remove(path, *, dir_fd=None) -
Удаляет (удаляет) файл path. Если path является каталогом, возникает
OSError. Используйтеrmdir()для удаления каталогов.Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
В Windows, попытка удалить файл, который используется, вызывает исключение; в Unix, запись в каталоге удаляется, но память, выделенная под файл, не освобождается до тех пор, пока исходный файл больше не используется.
Эта функция семантически идентична
unlink().Добавлена в версии 3.3: Аргумент dir_fd.
-
os.removedirs(name) -
Рекурсивно удаляет каталоги. Действует как
rmdir(), за исключением того, что, если лист-каталог успешно удалён,removedirs()пытается последовательно удалить все родительские каталоги, указанные в path, пока не возникнет ошибка (которая игнорируется, так как, как правило, означает, что родительский каталог не пуст). Например,os.removedirs('foo/bar/baz')сначала удалит каталог'foo/bar/baz', а затем удалит'foo/bar'и'foo', если они пустые. ВозбуждаетOSError, если лист-каталог не удалось удалить.
-
os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) -
Переименовывает файл или каталог src в dst. Если dst является каталогом, возникнет
OSError. В Unix, если dst существует и является файлом, он будет перезаписан без предупреждения, если у пользователя есть разрешение. Операция может завершиться неудачей на некоторых вариантах Unix, если src и dst находятся на разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX). В Windows, если dst уже существует, возникнетOSError, даже если это файл.Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для указания путей, относительных к дескрипторам каталогов.
Если вам нужно перекрывать место назначения на разных платформах, используйте
replace().Добавлена в версии 3.3: Аргументы src_dir_fd и dst_dir_fd.
-
os.renames(old, new) -
Функция рекурсивного переименования каталога или файла. Действует как
rename(), за исключением того, что сначала предпринимается попытка создания необходимых промежуточных каталогов для обеспечения правильности нового имени пути. После переименования каталоги, соответствующие правым частям имени старого пути, будут удалены с помощьюremovedirs().Примечание
Эта функция может завершиться неудачей с созданной новой структурой каталога, если у вас нет необходимых прав для удаления каталога или файла листа.
-
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 для указания путей, относительных к дескрипторам каталогов.
Добавлена в версии 3.3.
-
os.rmdir(path, *, dir_fd=None) -
Удаляет (удаляет) каталог path. Работает только при пустом каталоге, в противном случае возникает
OSError. Для удаления целых древовидных каталогов можно использоватьshutil.rmtree().Эта функция может поддерживать пути, относительные к дескрипторам каталогов.
Добавлена в версии 3.3: Параметр dir_fd.
-
os.scandir(path='.') -
Возвращает итератор объектов
DirEntry, соответствующих записям в каталоге, заданном параметром path. Записи возвращаются в произвольном порядке, и специальные записи'.'и'..'не включаются.Использование
scandir()вместоlistdir()может значительно повысить производительность кода, которому также необходима информация о типе файла или атрибутах файла, поскольку объектыDirEntryпредоставляют эту информацию, если операционная система предоставляет её при сканировании каталога. Все методыDirEntryмогут выполнять системный вызов, ноis_dir()иis_file()обычно требуют системного вызова только для символических ссылок;DirEntry.stat()всегда требует системного вызова в Unix, но только для символических ссылок в Windows.В Unix параметр path может быть типа
strилиbytes(используйтеfsencode()иfsdecode()для кодирования и декодирования путейbytes). В Windows параметр path должен быть типаstr. На обеих системах тип атрибутовnameиpathкаждого объектаDirEntryбудет таким же, как и тип параметра path.Следующий пример демонстрирует простое использование
scandir()для отображения всех файлов (исключая каталоги) в заданном path, которые не начинаются с'.'. Вызовentry.is_file()обычно не совершает дополнительного системного вызова:for entry in os.scandir(path): if not entry.name.startswith('.') and entry.is_file(): print(entry.name)Примечание
На системах Unix
scandir()использует системные функции opendir() и readdir(). В Windows она использует функции Win32 FindFirstFileW и FindNextFileW.Новая функция в версии 3.5.
-
class os.DirEntry -
Объект, возвращаемый функцией
scandir()для отображения пути к файлу и других атрибутов файла в каталоге.scandir()предоставит как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызовstat()илиlstat(), объектDirEntryбудет кэшировать результат.Объекты типа
DirEntryне предназначены для хранения в долгоживущих структурах данных; если вы знаете, что метаданные файла изменились или прошло много времени с момента вызоваscandir(), вызовитеos.stat(entry.path), чтобы получить актуальную информацию.Поскольку методы объекта
DirEntryмогут выполнять системные вызовы, они также могут вызвать исключениеOSError. Если вам требуется очень точный контроль над ошибками, вы можете перехватить исключениеOSErrorпри вызове одного из методовDirEntryи обработать его соответствующим образом.Атрибуты и методы объекта
DirEntryприведены ниже:-
name -
Базовое имя файла записи, относительно аргумента path функции
scandir().Атрибут
nameбудет того же типа (strилиbytes) что и аргумент path функцииscandir(). Используйте функциюfsdecode()для декодирования имён файлов в байтах.
-
path -
Полный путь к записи: эквивалентно
os.path.join(scandir_path, entry.name), где scandir_path — аргумент path функцииscandir(). Путь будет абсолютным только в том случае, если аргумент path функцииscandir()был абсолютным.Атрибут
pathбудет того же типа (strилиbytes) что и аргумент path функцииscandir(). Используйте функциюfsdecode()для декодирования имён файлов в байтах.
-
inode() -
Возвращает номер узла файла.
Результат кэшируется в объекте
DirEntry. Используйтеos.stat(entry.path, follow_symlinks=False).st_inoдля получения актуальной информации.При первом, некэшированном вызове, на Windows требуется системный вызов, а на Unix — нет.
-
is_dir(*, follow_symlinks=True) -
Возвращает
True, если запись является каталогом или символической ссылкой, указывающей на каталог; возвращаетFalse, если запись является или указывает на любой другой тип файла, или если она больше не существует.Если follow_symlinks равно
False, возвращаетTrueтолько если запись является каталогом (без следования по символическим ссылкам); возвращаетFalse, если запись является другим типом файла или если она больше не существует.Результат кэшируется в объекте
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, если запись является каталогом или другой записью, которая не является файлом, или если она больше не существует.Результат кэшируется в объекте
DirEntry. Кэширование, системные вызовы и возбуждаемые исключения соответствуютis_dir().
-
is_symlink() -
Возвращает
True, если запись является символической ссылкой (даже если она прервана); возвращаетFalse, если запись указывает на каталог или любой другой тип файла, или если она больше не существует.Результат кэшируется в объекте
DirEntry. Вызовитеos.path.islink()для получения актуальной информации.При первом, некэшированном вызове, в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением определённых Unix-файловых систем, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN.Этот метод может вызвать исключение
OSError, например,PermissionError, ноFileNotFoundErrorперехватывается и не генерируется.
-
stat(*, follow_symlinks=True) -
Возвращает объект
stat_resultдля этой записи. Этот метод по умолчанию следует по символическим ссылкам; чтобы получить статистику символической ссылки, добавьте аргументfollow_symlinks=False.В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова только если follow_symlinks равно
Trueи запись является символической ссылкой.В Windows атрибуты
st_ino,st_devиst_nlinkобъектаstat_resultвсегда устанавливаются в ноль. Вызовитеos.stat()для получения этих атрибутов.Результат кэшируется в объекте
DirEntry, с отдельным кешем для follow_symlinksTrueиFalse. Вызовитеos.stat()для получения актуальной информации.
Обратите внимание на соответствие между некоторыми атрибутами и методами объекта
DirEntryи объектаpathlib.Path. В частности, атрибутnameимеет тот же смысл, что и методыis_dir(),is_file(),is_symlink()иstat().Введено в версии 3.5.
-
-
os.stat(path, *, dir_fd=None, follow_symlinks=True) -
Получает состояние файла или дескриптора файла. Выполняет эквивалент системного вызова
stat()для заданного пути. path может быть строкой, байтовым объектом или открытым дескриптором файла. Возвращает объектstat_result.Функция обычно следует по символическим ссылкам; чтобы получить статистику по символической ссылке, добавьте аргумент
follow_symlinks=False, или используйте функциюlstat().Функция поддерживает указание дескриптора файла и неследование по символическим ссылкам.
Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264Введено в версии 3.3: Добавлены аргументы dir_fd и follow_symlinks, позволяющие указать дескриптор файла вместо пути.
-
class os.stat_result -
Объект, чьи атрибуты примерно соответствуют членам структуры
stat. Он используется для результата вызововos.stat(),os.fstat()иos.lstat().Атрибуты:
-
st_mode -
Режим файла: тип файла и биты режима файла (разрешения).
-
st_ino -
Номер узла inode.
-
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, выраженное в наносекундах как целое число.
См. также функцию
stat_float_times().Примечание
Точное значение и разрешение атрибутов
st_atime,st_mtimeиst_ctimeзависит от операционной системы и файловой системы. Например, на Windows-системах, использующих файловые системы FAT или FAT32,st_mtimeимеет разрешение 2 секунды, аst_atime— только 1 день. Для подробностей см. документацию вашей операционной системы.Аналогично, хотя
st_atime_ns,st_mtime_nsиst_ctime_nsвсегда выражаются в наносекундах, многие системы не обеспечивают точность наносекунд. На системах, которые предоставляют наносекундную точность, плавающее число, используемое для храненияst_atime,st_mtimeиst_ctime, не может сохранить всю точность, и в результате будет немного неточен. Если вам нужны точные временные метки, всегда используйтеst_atime_ns,st_mtime_nsиst_ctime_ns.На некоторых Unix-системах (например, Linux) могут быть доступны следующие атрибуты:
-
st_blocks -
Количество блоков по 512 байт, выделенных для файла. Это может быть меньше, чем
st_size/512, когда файл содержит пробелы.
-
st_blksize -
«Предпочитаемый» размер блока для эффективного ввода-вывода файловой системы. Запись в файл более мелкими кусками может привести к неэффективному чтению-модификации-записи.
-
st_rdev -
Тип устройства, если inode — устройство.
-
st_flags -
Пользовательские флаги для файла.
На других Unix-системах (например, FreeBSD) следующие атрибуты могут быть доступны (но могут быть заполнены только если root пытается их использовать):
-
st_gen -
Номер генерации файла.
-
st_birthtime -
Время создания файла.
На системах Mac OS следующие атрибуты также могут быть доступны:
-
st_rsize -
Фактический размер файла.
-
st_creator -
Создатель файла.
-
st_type -
Тип файла.
В системах Windows также доступен следующий атрибут:
-
st_file_attributes -
Атрибуты файла Windows:
dwFileAttributesчлен структурыBY_HANDLE_FILE_INFORMATION, возвращаемойGetFileInformationByHandle(). См. константыFILE_ATTRIBUTE_*в модуле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. -
-
os.stat_float_times([newvalue]) -
Определить, представляют ли
stat_resultвременные метки как объекты с плавающей точкой. Если newvalue равенTrue, будущие вызовыstat()возвращают значения с плавающей точкой, если он равенFalse, будущие вызовы возвращают целые числа. Если newvalue опущен, возвращается текущее значение.Для совместимости со старыми версиями Python доступ к
stat_resultкак кортежу всегда возвращает целые числа.В настоящее время Python по умолчанию возвращает значения с плавающей точкой. Приложения, которые не работают правильно с временными метками с плавающей точкой, могут использовать эту функцию для восстановления старого поведения.
Разрешение временных меток (то есть наименьшая возможная дробная часть) зависит от системы. Некоторые системы поддерживают только разрешение в секунды; в таких системах дробная часть всегда будет равна нулю.
Рекомендуется изменять это значение только при запуске программы в модуле __main__; библиотеки никогда не должны изменять это значение. Если приложение использует библиотеку, которая работает неправильно при обработке временных меток с плавающей точкой, это приложение должно отключить эту функцию, пока библиотека не будет исправлена.
Устарело начиная с версии 3.3.
-
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_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).Данная функция может поддерживать указание дескриптора файла.
Изменено в версии 3.2: Были добавлены константы
ST_RDONLYиST_NOSUID.Изменено в версии 3.4: Были добавлены константы
ST_NODEV,ST_NOEXEC,ST_SYNCHRONOUS,ST_MANDLOCK,ST_WRITE,ST_APPEND,ST_IMMUTABLE,ST_NOATIME,ST_NODIRATIME, иST_RELATIME.Доступность: Unix.
Добавлен в версии 3.3: Добавлена поддержка указания открытого дескриптора файла для path.
-
os.supports_dir_fd -
Объект
Set, указывающий, какие функции в модулеosдопускают использование параметра dir_fd. Разные платформы предоставляют различную функциональность, и опция, которая может работать на одной платформе, может быть неподдерживаемой на другой. Для обеспечения согласованности функции, которые поддерживают dir_fd, всегда позволяют указать параметр, но при этом будут генерировать исключение, если функциональность фактически недоступна.Для проверки того, разрешает ли конкретная функция использование своего параметра dir_fd, используйте оператор
inнаsupports_dir_fd. Например, это выражение определяет, доступен ли параметр dir_fd функцииos.stat()на локальной платформе:os.stat in os.supports_dir_fd
В настоящее время параметры dir_fd работают только на платформах Unix; ни один из них не работает на Windows.
Добавлен в версии 3.3.
-
os.supports_effective_ids -
Объект
Set, указывающий, какие функции в модулеosразрешают использование параметра effective_ids дляos.access(). Если локальная платформа поддерживает это, коллекция будет содержатьos.access(), в противном случае она будет пустой.Чтобы проверить, можете ли вы использовать параметр effective_ids для
os.access(), используйте операторinнаsupports_effective_ids, как показано ниже:os.access in os.supports_effective_ids
В настоящее время effective_ids работает только на платформах Unix; он не работает на Windows.
Добавлен в версии 3.3.
-
os.supports_fd -
Объект
Set, указывающий, какие функции в модулеosразрешают указание своего параметра path в качестве открытого дескриптора файла. Разные платформы предоставляют различную функциональность, и опция, которая может работать на одной платформе, может быть неподдерживаемой на другой. Для обеспечения согласованности функции, которые поддерживают fd, всегда позволяют указать параметр, но при этом будут генерировать исключение, если функциональность фактически недоступна.Чтобы проверить, разрешает ли конкретная функция указать открытый дескриптор файла для своего параметра path, используйте оператор
inнаsupports_fd. Например, это выражение определяет, принимает лиos.chdir()открытые дескрипторы файлов при вызове на вашей локальной платформе:os.chdir in os.supports_fd
Добавлен в версии 3.3.
-
os.supports_follow_symlinks -
Объект
Set, указывающий, какие функции в модулеosразрешают использование параметра follow_symlinks. Разные платформы предоставляют различную функциональность, и опция, которая может работать на одной платформе, может быть неподдерживаемой на другой. Для обеспечения согласованности функции, которые поддерживают follow_symlinks, всегда позволяют указать параметр, но при этом будут генерировать исключение, если функциональность фактически недоступна.Чтобы проверить, разрешает ли конкретная функция использование своего параметра follow_symlinks, используйте оператор
inнаsupports_follow_symlinks. Например, это выражение определяет, доступен ли параметр follow_symlinks функции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 6.0 (Vista).
symlink()сгенерируетNotImplementedErrorна версиях Windows, предшествующих 6.0.Эта функция поддерживает пути, относительные к дескрипторам каталогов.
Примечание
В Windows для успешного создания символических ссылок требуется привилегия SeCreateSymbolicLinkPrivilege. Эта привилегия обычно не предоставляется обычным пользователям, но доступна учётным записям, которые могут повысить привилегии до уровня администратора. Получение привилегии или запуск приложения от имени администратора — это способы успешного создания символических ссылок.
OSErrorвозникает, когда функция вызывается не обладающим привилегиями пользователем.Доступность: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Добавлен в версии 3.3: Добавлен аргумент dir_fd, а теперь target_is_directory разрешено на платформах, отличных от Windows.
-
os.sync() -
Принудительно записать всё в диск.
Доступность: Unix.
Добавлен в версии 3.3.
-
os.truncate(path, length) -
Усечь файл, соответствующий path, так, чтобы его размер был не более length байт.
Эта функция поддерживает указание дескриптора файла.
Доступность: Unix, Windows.
Добавлен в версии 3.3.
Изменено в версии 3.5: Добавлена поддержка Windows
-
os.unlink(path, *, dir_fd=None) -
Удалите (стирайте) файл path. Эта функция семантически идентична
remove(); имяunlinkявляется его традиционным именем Unix. Пожалуйста, см. документацию дляremove()для получения дополнительной информации.Добавлено в версии 3.3: Параметр dir_fd.
-
os.utime(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True) -
Установите время доступа и изменения файла, указанного path.
utime()принимает два необязательных параметра, times и ns. Эти параметры определяют время, установленное для path, и используются следующим образом:- Если ns указан, он должен быть 2-кортежем вида
(atime_ns, mtime_ns), где каждый член является целым числом, выражающим наносекунды. - Если times не
None, он должен быть 2-кортежем вида(atime, mtime), где каждый член является целым числом или числом с плавающей точкой, выражающим секунды. - Если times задан
Noneи ns не указан, это эквивалентно указаниюns=(atime_ns, mtime_ns), где оба времени являются текущим временем.
Ошибка возникает при указании кортежей как для times, так и для ns.
Возможность передачи каталога для path зависит от того, реализует ли операционная система каталоги как файлы (например, Windows этого не делает). Обратите внимание, что точное время, установленное здесь, может не быть возвращено последующим вызовом
stat(), в зависимости от разрешения, с которым ваша операционная система записывает время доступа и изменения; см.stat(). Лучший способ сохранить точное время — использовать поля st_atime_ns и st_mtime_ns из результата вызоваos.stat()с параметром ns для вызоваutime.Эта функция может поддерживать указание дескриптора файла, пути, относительные к дескрипторам каталогов и не следовать символьным ссылкам.
Добавлено в версии 3.3: Добавлена поддержка указания открытого дескриптора файла для path, а также параметров dir_fd, follow_symlinks и ns.
- Если ns указан, он должен быть 2-кортежем вида
-
os.walk(top, topdown=True, onerror=None, followlinks=False) -
Генерирует имена файлов в дереве каталогов, проходя по дереву сверху вниз или снизу вверх. Для каждого каталога в дереве, укоренённом в каталоге top (включая top), она возвращает 3-кортеж
(dirpath, dirnames, filenames).dirpath — строка, путь к каталогу. dirnames — список имён подкаталогов в dirpath (исключая
'.'и'..'). filenames — список имён файлов, не являющихся каталогами, в dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (начинающийся с top) к файлу или каталогу в dirpath, выполнитеos.path.join(dirpath, name).Если необязательный аргумент topdown равен
Trueили не указан, тройка для каталога генерируется до троек для любых его подкаталогов (каталоги генерируются сверху вниз). Если topdown равенFalse, тройка для каталога генерируется после троек для всех его подкаталогов (каталоги генерируются снизу вверх). Независимо от значения topdown, список подкаталогов извлекается до генерации кортежей для каталога и его подкаталогов.Когда topdown равен
True, вызывающий может изменить список dirnames на месте (возможно, используяdelили присваивание срезом), иwalk()будет рекурсивно входить только в подкаталоги, имена которых остаются в dirnames; это может использоваться для обрезки поиска, навязывания определённого порядка посещения или даже для информированияwalk()о каталогах, созданных или переименованных вызывающим перед возобновлениемwalk()ещё раз. Изменение dirnames при topdown равномуFalseне влияет на поведение обхода, поскольку в режиме снизу вверх каталоги в dirnames генерируются до генерации самого dirpath.По умолчанию ошибки вызова
listdir()игнорируются. Если необязательный аргумент onerror задан, он должен быть функцией; она будет вызвана с одним аргументом, экземпляромOSError. Она может сообщить об ошибке, чтобы продолжить обход, или вызвать исключение для прерывания обхода. Обратите внимание, что имя файла доступно в качестве атрибутаfilenameобъекта исключения.По умолчанию
walk()не будет переходить в символьную ссылку, которая указывает на каталог. Установите followlinks вTrueдля посещения каталогов, на которые указывают символические ссылки, на системах, которые их поддерживают.Примечание
Обратите внимание, что установка followlinks в
Trueможет привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самого себя.walk()не отслеживает каталоги, в которых она уже побывала.Примечание
Если вы передаёте относительный путь, не изменяйте текущий рабочий каталог между возобновлениями
walk().walk()никогда не меняет текущий каталог и предполагает, что его вызывающий тоже.В этом примере отображается количество байтов, занимаемых файлами, которые не являются каталогами, в каждом каталоге под каталогом начала, за исключением случаев, когда он не ищет в подкаталогах CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directoriesВ следующем примере (простая реализация
shutil.rmtree()) обход дерева снизу вверх является необходимым,rmdir()не позволяет удалять каталог до тех пор, пока каталог не будет пуст:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))Изменено в версии 3.5: Эта функция теперь вызывает
os.scandir()вместоos.listdir(), что делает её быстрее, уменьшая количество вызововos.stat().
-
os.fwalk(top='.', topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=None) -
Это поведение точно такое же, как у
walk(), за исключением того, что оно возвращает 4-кортеж(dirpath, dirnames, filenames, dirfd), и оно поддерживаетdir_fd.dirpath, dirnames и filenames идентичны выводу
walk(), а dirfd — дескриптор файла, ссылающийся на каталог dirpath.Эта функция всегда поддерживает пути, относительные к дескрипторам каталогов и не следовать символьным ссылкам. Однако обратите внимание, что, в отличие от других функций, значение по умолчанию для follow_symlinks в
fwalk()равноFalse.Примечание
Поскольку
fwalk()возвращает дескрипторы файлов, они действительны только до следующего шага итерации, поэтому вы должны дублировать их (например, с помощьюdup()), если хотите сохранить их дольше.В этом примере отображается количество байтов, занимаемых файлами, которые не являются каталогами, в каждом каталоге под каталогом начала, за исключением случаев, когда он не ищет в подкаталогах CVS:
import os for root, dirs, files, rootfd in os.fwalk('python/Lib/email'): print(root, "consumes", end="") print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]), end="") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directoriesВ следующем примере обход дерева снизу вверх является необходимым:
rmdir()не позволяет удалять каталог, прежде чем он не станет пустым:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files, rootfd in os.fwalk(top, topdown=False): for name in files: os.unlink(name, dir_fd=rootfd) for name in dirs: os.rmdir(name, dir_fd=rootfd)Доступность: Unix.
Добавлено в версии 3.3.
5.1. Расширенные атрибуты Linux
Добавлено в версии 3.3.
Эти функции доступны только в Linux.
-
os.getxattr(path, attribute, *, follow_symlinks=True) -
Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть байтами или строкой. Если это строка, она кодируется с помощью кодировки файловой системы.
Эта функция может поддерживать указание дескриптора файла и не следовать символьным ссылкам.
-
os.listxattr(path=None, *, follow_symlinks=True) -
Возвращает список расширенных атрибутов файловой системы в path. Атрибуты в списке представлены как строки, декодированные с помощью кодировки файловой системы. Если path это
None,listxattr()будет анализировать текущий каталог.Эта функция может поддерживать указание дескриптора файла и не следовать символьным ссылкам.
-
os.removexattr(path, attribute, *, follow_symlinks=True) -
Удаляет расширенное атрибут файловой системы attribute из path. attribute должен быть типа bytes или str. Если это строка, она кодируется с помощью кодировки файловой системы.
Эта функция может поддерживать указание дескриптора файла и не следование символичным ссылкам.
-
os.setxattr(path, attribute, value, flags=0, *, follow_symlinks=True) -
Устанавливает расширенный атрибут файловой системы attribute для path со значением value. attribute должен быть типа bytes или str без вложенных NUL. Если это строка, она кодируется с помощью кодировки файловой системы. flags может быть
XATTR_REPLACEилиXATTR_CREATE. ЕслиXATTR_REPLACEзадано и атрибут не существует,EEXISTSбудет поднято. ЕслиXATTR_CREATEзадано и атрибут уже существует, атрибут не будет создан иENODATAбудет поднято.Эта функция может поддерживать указание дескриптора файла и не следование символичным ссылкам.
Примечание
Ошибка в ядрах Linux версии менее 2.6.39 приводила к игнорированию аргумента flags на некоторых файловых системах.
-
os.XATTR_SIZE_MAX -
Максимальный размер значения расширенного атрибута. В настоящее время на Linux он составляет 64 КБ.
-
os.XATTR_CREATE -
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна создать атрибут.
-
os.XATTR_REPLACE -
Это возможное значение для аргумента flags в
setxattr(). Оно указывает, что операция должна заменить существующий атрибут.
6. Управление процессами
Эти функции могут использоваться для создания и управления процессами.
Различные функции exec* принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый из этих аргументов передается новой программе как ее собственное имя, а не как аргумент, который пользователь мог ввести в командной строке. Для программиста C это argv[0] передаваемый в main(). Например, os.execv('/bin/echo',
['foo', 'bar']) будет только выводить bar в стандартный вывод; foo будет проигнорирован.
-
os.abort() -
Генерирует сигнал
SIGABRTтекущему процессу. В Unix по умолчанию поведение заключается в создании дампа ядра; в Windows процесс сразу возвращает код выхода3. Имейте в виду, что вызов этой функции не вызовет обработчик сигнала Python, зарегистрированный дляSIGABRTсsignal.signal().
-
os.execl(path, arg0, arg1, ...) -
os.execle(path, arg0, arg1, ..., env) -
os.execlp(file, arg0, arg1, ...) -
os.execlpe(file, arg0, arg1, ..., env) -
os.execv(path, args) -
os.execve(path, args, env) -
os.execvp(file, args) -
os.execvpe(file, args, env) -
Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращаются. В Unix новая исполняемая программа загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающий процесс. Ошибки будут сообщаться как исключения
OSError.Текущий процесс заменяется немедленно. Открытые объекты файлов и дескрипторы не сбрасываются, поэтому, если в буфере может быть данные в открытых файлах, вы должны сбросить их с помощью
sys.stdout.flush()илиos.fsync()перед вызовом функцииexec*.Варианты функций
exec*с «l» и «v» различаются тем, как передаются аргументы командной строки. Варианты с «l» могут быть легче в работе, если количество параметров фиксировано в момент написания кода; отдельные параметры просто становятся дополнительными параметрами для функцийexecl*(). Варианты с «v» хороши, когда количество параметров переменное, с аргументами, передаваемыми в списке или кортеже в качестве параметра args. В любом случае, аргументы дочернего процесса должны начинаться с имени запускаемой команды, но это не проверяется.Варианты, включающие «p» в конце (
execlp(),execlpe(),execvp()иexecvpe()) будут использовать переменную средыPATHдля поиска программы file. При замене среды (используя один из вариантовexec*e, обсуждаемых в следующем абзаце), новая среда используется в качестве источника переменнойPATH. Другие варианты,execl(),execle(),execv()иexecve(), не будут использовать переменнуюPATHдля поиска исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.Для
execle(),execlpe(),execve()иexecvpe()(обратите внимание, что все они заканчиваются на «e»), параметр env должен быть отображением, используемым для определения переменных среды для нового процесса (они используются вместо среды текущего процесса); функцииexecl(),execlp(),execv()иexecvp()все заставляют новый процесс унаследовать среду текущего процесса.Для
execve()на некоторых платформах path также может быть указан как открытый дескриптор файла. Эта функциональность может быть не поддерживается на вашей платформе; вы можете проверить, доступна ли она, используяos.supports_fd. Если она недоступна, ее использование вызоветNotImplementedError.Доступность: Unix, Windows.
Введено в версии 3.3: Добавлена поддержка указания открытого дескриптора файла для path для
execve().
-
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 или создать pipe.
Доступность: 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() из потока.
Предупреждение
См.
sslдля приложений, использующих модуль SSL с fork().Доступность: Unix.
-
os.forkpty() -
Создать дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару
(pid, fd), где pid —0в дочернем процессе, новый идентификатор процесса дочернего процесса в родительском процессе, а fd — дескриптор файла главного конца псевдотерминала. Для более переносимого подхода используйте модульpty. Если произошла ошибка,OSErrorгенерируется.Доступность: некоторые варианты Unix.
-
os.kill(pid, sig) -
Отправить сигнал sig процессу pid. Константы для определенных сигналов, доступные на платформе хоста, определены в модуле
signal.Windows: Сигналы
signal.CTRL_C_EVENTиsignal.CTRL_BREAK_EVENT— это специальные сигналы, которые могут быть отправлены только консольным процессам, которые используют общее консольное окно, например, некоторым дочерним процессам. Любое другое значение sig приведет к безусловному завершению процесса API TerminateProcess, и код выхода будет установлен на sig. Windows-версияkill()дополнительно принимает дескрипторы процессов для завершения.См. также
signal.pthread_kill().New in version 3.2: Поддержка Windows.
-
os.killpg(pgid, sig) -
Отправить сигнал sig группе процессов pgid.
Доступность: 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.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().Варианты функций
spawn*с суффиксом “l” и “v” отличаются способом передачи аргументов командной строки. Варианты с “l” проще в использовании, если количество параметров фиксировано; отдельные параметры просто становятся дополнительными параметрами для функцийspawnl*(). Варианты с “v” подходят, когда количество параметров переменное, и аргументы передаются в списке или кортеже как параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.Варианты, включающие второй суффикс “p” (
spawnlp(),spawnlpe(),spawnvp()иspawnvpe()) будут использовать переменную средыPATHдля поиска программы file. Когда среда заменяется (используя один из вариантовspawn*e, обсуждаемых в следующем абзаце), новая среда используется как источник переменнойPATH. Другие вариантыspawnl(),spawnle(),spawnv()иspawnve()не будут использовать переменнуюPATHдля поиска исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.Для
spawnle(),spawnlpe(),spawnve()иspawnvpe()(обратите внимание, что все они оканчиваются на “e”), параметр env должен быть отображением, используемым для определения переменных среды для нового процесса (они используются вместо среды текущего процесса); функцииspawnl(),spawnlp(),spawnv()иspawnvp()заставляют новый процесс унаследовать среду текущего процесса. Обратите внимание, что ключи и значения в словаре env должны быть строками; некорректные ключи или значения приведут к ошибке функции с возвращаемым значением127.В качестве примера, следующие вызовы
spawnlp()иspawnvpe()эквивалентны:import os os.spawnlp(os.P_WAIT, 'cp', 'cp', 'index.html', '/dev/null') L = ['cp', 'index.html', '/dev/null'] os.spawnvpe(os.P_WAIT, 'cp', L, os.environ)
Доступность: Unix, Windows.
spawnlp(),spawnlpe(),spawnvp()иspawnvpe()недоступны в Windows.spawnle()иspawnve()не потокобезопасны в Windows; рекомендуется использовать модульsubprocess.
-
os.P_NOWAIT -
os.P_NOWAITO -
Возможные значения параметра mode для семейства функций
spawn*. Если одно из этих значений указано, функцииspawn*()вернут результат сразу после создания нового процесса, вернув идентификатор процесса.Доступность: Unix, Windows.
-
os.P_WAIT -
Возможные значения параметра mode для семейства функций
spawn*. Если это значение указано как mode, функцииspawn*()не вернут значение, пока новый процесс не завершится, и вернут код завершения процесса при успешном выполнении или-signalв случае убийства процесса сигналом.Доступность: Unix, Windows.
-
os.P_DETACH -
os.P_OVERLAY -
Возможные значения параметра mode для семейства функций
spawn*. Эти значения менее портативны, чем указанные выше.P_DETACHпохож наP_NOWAIT, но новый процесс отделён от консоли вызывающего процесса. Если используетсяP_OVERLAY, текущий процесс будет заменён; функцияspawn*не вернётся.Доступность: Windows.
-
os.startfile(path[, operation]) -
Запуск файла с помощью соответствующего приложения.
Когда operation не указан или
'open', это работает как двойной щелчок по файлу в проводнике Windows или передача имени файла в качестве аргумента команде start из интерактивной командной оболочки: файл открывается с помощью приложения (если таковое есть), соответствующего его расширению.Когда задан другой operation, он должен быть «глаголом команды», указывающим, что нужно сделать с файлом. Общие глаголы, документированные Microsoft, —
'print'и'edit'(для использования с файлами), а также'explore'и'find'(для использования с каталогами).startfile()возвращается сразу после запуска соответствующего приложения. Нет возможности дождаться закрытия приложения и нет способа получить код завершения приложения. Параметр path — относительный к текущей директории. Если вы хотите использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'); функция Win32ShellExecute()не работает, если это так. Используйте функциюos.path.normpath()для обеспечения правильного кодирования пути для Win32.Для сокращения накладных расходов на запуск интерпретатора функция Win32
ShellExecute()не разрешается, пока функция не будет вызвана впервые. Если функция не может быть разрешена, будет поднята ошибкаNotImplementedError.Доступность: Windows.
-
os.system(command) -
Выполнение команды (строка) в дочерней оболочке. Это реализуется вызовом стандартной C-функции
system(), и имеет те же ограничения. Изменения вsys.stdinи т. д. не отражаются в среде выполняемой команды. Если command генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора.В Unix возвращаемое значение — код завершения процесса, закодированный в формате, указанном для
wait(). Обратите внимание, что POSIX не определяет смысл возвращаемого значения C-функцииsystem(), поэтому возвращаемое значение функции Python зависит от системы.В Windows возвращаемое значение — то, которое возвращает оболочка системы после выполнения command. Оболочка задаётся переменной среды Windows
COMSPEC: обычно cmd.exe, которая возвращает код завершения выполняемой команды; на системах с неродной оболочкой см. документацию по вашей оболочке.Модуль
subprocessпредоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее. См. раздел Замена устаревших функций модулем subprocess в документации поsubprocessдля полезных рецептов.Доступность: Unix, Windows.
-
os.times() -
Возвращает текущие глобальные времена выполнения процесса. Возвращаемое значение — объект с пятью атрибутами:
-
user- время пользователя -
system- время системы -
children_user- время пользователя всех дочерних процессов -
children_system- время системы всех дочерних процессов -
elapsed- прошедшее реальное время с фиксированной точки в прошлом
Для обратной совместимости этот объект также ведет себя как пятерка кортежей, содержащая
user,system,children_user,children_system, иelapsedв указанном порядке.См. страницу руководства Unix times(2) или соответствующую документацию API платформы Windows. В Windows известны только
userиsystem; другие атрибуты равны нулю.Доступность: Unix, Windows.
Изменено в версии 3.3: Тип возвращаемого значения изменён с кортежа на похожий на кортеж объект с именованными атрибутами.
-
-
os.wait() -
Ожидание завершения дочернего процесса и возврат кортежа, содержащего его идентификатор процесса и индикатор состояния завершения: 16-битное число, младший байт которого — номер сигнала, который убил процесс, а старший байт — код завершения (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл кода.
Доступность: Unix.
-
os.waitid(idtype, id, options) -
Ожидание завершения одного или нескольких дочерних процессов. idtype может быть
P_PID,P_PGIDилиP_ALL. id указывает идентификатор процесса, на котором нужно ожидать. options формируется из побитового ИЛИ одного или нескольких значенийWEXITED,WSTOPPEDилиWCONTINUED, а также может быть побитовым ИЛИ сWNOHANGилиWNOWAIT. Возвращаемое значение — объект, представляющий данные, содержащиеся в структуреsiginfo_t, а именно:si_pid,si_uid,si_signo,si_status,si_codeилиNone, если заданоWNOHANGи нет дочерних процессов в состоянии ожидания.Доступность: Unix.
Введено в версии 3.3.
-
os.P_PID -
os.P_PGID -
os.P_ALL -
Возможные значения для idtype в
waitid(). Они влияют на то, как интерпретируется id.Доступность: Unix.
Введено в версии 3.3.
-
os.WEXITED -
os.WSTOPPED -
os.WNOWAIT -
Флаги, которые можно использовать в options в
waitid(), определяющие, какой дочерний сигнал ожидать.Доступность: Unix.
Введено в версии 3.3.
-
os.CLD_EXITED -
os.CLD_DUMPED -
os.CLD_TRAPPED -
os.CLD_CONTINUED -
Возможные значения для
si_codeв результате, возвращаемомwaitid().Доступность: Unix.
Введено в версии 3.3.
-
os.waitpid(pid, options) -
Подробности этой функции различаются в Unix и Windows.
В Unix: Ожидание завершения дочернего процесса с заданным идентификатором процесса pid и возврат кортежа, содержащего его идентификатор процесса и индикатор состояния завершения (закодированные как в
wait()). Семантика вызова зависит от значения целого числа options, которое должно быть0для нормальной работы.Если pid больше
0,waitpid()запрашивает информацию о состоянии конкретного процесса. Если pid равно0, запрос касается состояния любого дочернего процесса в группе процессов текущего процесса. Если pid равно-1, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше-1, запрос состояния касается любого процесса в группе процессов-pid(абсолютное значение pid).Исключение
OSErrorс значением errno возникает, когда вызов системной функции возвращает -1.В Windows: Ожидание завершения процесса с заданным дескриптором процесса pid и возврат кортежа, содержащего pid и его код завершения, сдвинутый влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). Значение pid, меньшее или равное
0, не имеет особого значения в Windows и вызывает исключение. Значение целого числа options не влияет. pid может относиться к любому процессу, идентификатор которого известен, необязательно к дочернему процессу. Функцииspawn*, вызываемые сP_NOWAIT, возвращают подходящие дескрипторы процессов.Изменено в версии 3.5: Если системный вызов прерывается, и обработчик сигнала не вызывает исключение, функция теперь повторно пытается выполнить системный вызов вместо того, чтобы вызывать исключение
InterruptedError(см. PEP 475 для обоснования).
-
os.wait3(options) -
Аналогично
waitpid(), за исключением отсутствия аргумента идентификатора процесса и возвращения тройки кортежей, содержащей идентификатор процесса дочернего процесса, индикатор состояния завершения и информацию об использовании ресурсов. Обратитесь кresource.getrusage()для получения подробностей об использовании ресурсов. Аргумент options такой же, как и для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.Доступность: Unix.
-
os.WIFCONTINUED(status) -
Возвращает
Trueесли процесс был продолжен из приостановки управления задачами, иначе возвращаетFalse.Доступность: Unix.
-
os.WIFSTOPPED(status) -
Возвращает
Trueесли процесс был остановлен, иначе возвращаетFalse.Доступность: Unix.
-
os.WIFSIGNALED(status) -
Возвращает
Trueесли процесс завершился из-за сигнала, иначе возвращаетFalse.Доступность: Unix.
-
os.WIFEXITED(status) -
Возвращает
Trueесли процесс завершился с помощью системного вызова exit(2), иначе возвращаетFalse.Доступность: Unix.
-
os.WEXITSTATUS(status) -
Если
WIFEXITED(status)истинно, возвращает целое значение параметра системного вызова exit(2). В противном случае возвращаемое значение не имеет смысла.Доступность: Unix.
-
os.WSTOPSIG(status) -
Возвращает сигнал, который привёл к остановке процесса.
Доступность: Unix.
-
os.WTERMSIG(status) -
Возвращает сигнал, который привёл к завершению процесса.
Доступность: Unix.
7. Интерфейс к планировщику
Эти функции управляют тем, как операционная система выделяет время процессора процессу. Они доступны только на некоторых платформах Unix. Для получения более подробной информации см. страницы руководства Unix.
Введено в версии 3.3.
Следующие политики планирования доступны, если поддерживаются операционной системой.
-
os.SCHED_OTHER -
Политика планирования по умолчанию.
-
os.SCHED_BATCH -
Политика планирования для CPU-ёмких процессов, которая пытается сохранить интерактивность остальных процессов на компьютере.
-
os.SCHED_IDLE -
Политика планирования для фоновых задач с крайне низким приоритетом.
-
os.SCHED_SPORADIC -
Политика планирования для спорадических серверных программ.
-
os.SCHED_FIFO -
Политика планирования «первым пришёл — первым обслужен».
-
os.SCHED_RR -
Политика планирования кругового обзора.
-
os.SCHED_RESET_ON_FORK -
Этот флаг может быть объединён с любой другой политикой планирования. При виртуализации процесса, у которого установлен этот флаг, политика планирования и приоритет дочернего процесса сбрасываются до значений по умолчанию.
-
class os.sched_param(sched_priority) -
Этот класс представляет настраиваемые параметры планирования, используемые в
sched_setparam(),sched_setscheduler()иsched_getparam(). Он неизменяем.В настоящее время существует только один возможный параметр:
-
sched_priority -
Приоритет планирования для политики планирования.
-
-
os.sched_get_priority_min(policy) -
Получить минимальное значение приоритета для policy. policy — одна из констант политики планирования, указанных выше.
-
os.sched_get_priority_max(policy) -
Получить максимальное значение приоритета для policy. policy — одна из констант политики планирования, указанных выше.
-
os.sched_setscheduler(pid, policy, param) -
Установить политику планирования для процесса с PID pid. pid равное 0 означает вызывающий процесс. policy — одна из констант политики планирования, указанных выше. param — экземпляр
sched_param.
-
os.sched_getscheduler(pid) -
Возвращает политику планирования для процесса с PID pid. pid равное 0 означает вызывающий процесс. Результат — одна из констант политики планирования, указанных выше.
-
os.sched_setparam(pid, param) -
Установить параметры планирования для процесса с PID pid. pid равное 0 означает вызывающий процесс. param — экземпляр
sched_param.
-
os.sched_getparam(pid) -
Возвращает параметры планирования в виде экземпляра
sched_paramдля процесса с PID pid. pid равное 0 означает вызывающий процесс.
-
os.sched_rr_get_interval(pid) -
Возвращает квант кругового обзора в секундах для процесса с PID pid. pid равное 0 означает вызывающий процесс.
-
os.sched_yield() -
Добровольно уступает процессор.
-
os.sched_setaffinity(pid, mask) -
Ограничить процесс с PID pid (или текущий процесс, если ноль) набором процессоров. mask — итерируемый объект целых чисел, представляющий набор процессоров, на которые должен быть ограничен процесс.
-
os.sched_getaffinity(pid) -
Возвращает набор процессоров, к которым ограничен процесс с PID pid (или текущий процесс, если ноль).
8. Разное системное информация
-
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если количество неопределено.Введено в версии 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.
9. Разнообразные функции
-
os.urandom(n) -
Возвращает строку из n случайных байтов, подходящих для криптографического использования.
Эта функция возвращает случайные байты из специфичного для ОС источника случайных чисел. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.
В Linux используется системный вызов
getrandom(), если он доступен, и пул энтропии urandom инициализирован (getrandom()не блокирует). В Unix-подобных системах он будет запрашивать/dev/urandom. В Windows он будет использоватьCryptGenRandom(). Если источник случайных чисел не найден, будет поднято исключениеNotImplementedError.Для удобного интерфейса с генератором случайных чисел, предоставляемым вашей платформой, см.
random.SystemRandom.Изменено в версии 3.5.2: В Linux, если
getrandom()блокируется (пул энтропии urandom ещё не инициализирован), происходит возврат к чтению из/dev/urandom.Изменено в версии 3.5: В Linux 3.17 и новее используется системный вызов
getrandom(), если он доступен. В OpenBSD 5.6 и новее используется функция Cgetentropy(). Эти функции избегают использования внутреннего дескриптора файла.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.5/library/os.html