os
— Различные интерфейсы операционной системы¶
Исходный код: Lib/os.py.
Этот модуль обеспечивает переносимый способ использования функциональности, зависящей от операционной системы. Если вы хотите просто прочитать или записать файл, смотрите модуль open()
, если вы хотите манипулировать путями, смотрите модуль os.path
, а если вы хотите прочитать все строки всех файлов в командной строке, смотрите модуль fileinput
. Для создания временных файлов и каталогов смотрите модуль tempfile
, а для высокоуровневой работы с файлами и каталогами смотрите модуль shutil
.
Примечания о доступности этих функций:
Дизайн всех встроенных модулей Python, зависящих от операционной системы, таков, что пока доступна одна и та же функциональность, она использует один и тот же интерфейс; например, функция
os.stat(path)
возвращает статистическую информацию о path в одном и том же формате (который, как оказалось, возник из интерфейса POSIX).Расширения, характерные для конкретной операционной системы, также доступны через модуль
os
, но их использование, конечно, угрожает переносимости.Все функции, принимающие имена путей или файлов, принимают как байты, так и строковые объекты, и приводят к объекту того же типа, если возвращается путь или имя файла.
На VxWorks не поддерживаются os.popen, os.fork, os.execv и os.spawn*p*.
Примечание
Все функции в этом модуле поднимают OSError
(или их подклассы) в случае недопустимых или недоступных имен и путей файлов, или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.
-
os.
name
¶ Имя импортируемого модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена:
'posix'
,'nt'
,'java'
.См.также
sys.platform
имеет более тонкую детализацию.os.uname()
предоставляет системно-зависимую информацию о версии.Модуль
platform
обеспечивает детальную проверку идентичности системы.
Имена файлов, аргументы командной строки и переменные среды¶
В Python имена файлов, аргументы командной строки и переменные среды представлены с использованием строкового типа. В некоторых системах перед передачей операционной системе необходимо декодировать эти строки в байты и обратно. Python использует filesystem encoding and error handler для выполнения этого преобразования (см. sys.getfilesystemencoding()
).
filesystem encoding and error handler конфигурируются при запуске Python функцией PyConfig_Read()
: см. члены filesystem_encoding
и filesystem_errors
PyConfig
.
Изменено в версии 3.1: В некоторых системах преобразование с использованием кодировки файловой системы может оказаться неудачным. В этом случае Python использует surrogateescape encoding error handler, что означает, что недекодируемые байты заменяются символом Юникода U+DCxx при декодировании, и они снова переводятся в исходный байт при кодировании.
Кодировка file system encoding должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает такой гарантии, функции API могут поднять UnicodeError
.
См. также locale encoding.
Режим Python UTF-8¶
Добавлено в версии 3.7: Более подробную информацию см. в разделе PEP 540.
Режим Python UTF-8 Mode игнорирует locale encoding и заставляет использовать кодировку UTF-8:
Используйте UTF-8 в качестве filesystem encoding.
sys.getfilesystemencoding()
возвращает'UTF-8'
.locale.getpreferredencoding()
возвращает'UTF-8'
(аргумент do_setlocale не имеет эффекта).sys.stdin
,sys.stdout
иsys.stderr
все используют UTF-8 в качестве кодировки текста, причемsurrogateescape
error handler включен дляsys.stdin
иsys.stdout
(sys.stderr
продолжает использоватьbackslashreplace
, как это происходит в режиме по умолчанию с учетом локали).В Unix,
os.device_encoding()
возвращает'UTF-8'
, а не кодировку устройства.
Обратите внимание, что стандартные настройки потока в режиме UTF-8 могут быть отменены с помощью PYTHONIOENCODING
(так же, как и в стандартном режиме с учетом локали).
Вследствие изменений в этих API более низкого уровня, другие API более высокого уровня также демонстрируют различное поведение по умолчанию:
Аргументы командной строки, переменные окружения и имена файлов декодируются в текст с использованием кодировки UTF-8.
os.fsdecode()
иos.fsencode()
используют кодировку UTF-8.open()
,io.open()
иcodecs.open()
по умолчанию используют кодировку UTF-8. Однако по умолчанию они по-прежнему используют строгий обработчик ошибок, так что попытка открыть двоичный файл в текстовом режиме, скорее всего, вызовет исключение, а не выдаст бессмысленные данные.
Python UTF-8 Mode включается, если при запуске Python локаль LC_CTYPE имеет значение C
или POSIX
(см. функцию PyConfig_Read()
).
Его можно включить или выключить с помощью опции командной строки -X utf8
и переменной окружения PYTHONUTF8
.
Если переменная окружения PYTHONUTF8
вообще не установлена, то интерпретатор по умолчанию использует текущие настройки локали, если текущая локаль не определена как устаревшая локаль на основе ASCII (как описано для PYTHONCOERCECLOCALE
), и принуждение локали либо отключено, либо не работает. В таких унаследованных локалях интерпретатор будет по умолчанию включать режим UTF-8, если нет явных указаний не делать этого.
Режим Python UTF-8 Mode может быть включен только при запуске Python. Его значение можно прочитать из sys.flags.utf8_mode
.
См. также UTF-8 mode on Windows и filesystem encoding and error handler.
Параметры процесса¶
Эти функции и элементы данных предоставляют информацию и действуют в отношении текущего процесса и пользователя.
-
os.
ctermid
()¶ Возвращает имя файла, соответствующего управляющему терминалу процесса.
Availability: Unix.
-
os.
environ
¶ Объект mapping, где ключи и значения являются строками, представляющими окружение процесса. Например,
environ['HOME']
- это имя пути вашего домашнего каталога (на некоторых платформах), и эквивалентноgetenv("HOME")
в C.Это отображение фиксируется при первом импорте модуля
os
, обычно во время запуска Python как часть обработкиsite.py
. Изменения среды, сделанные после этого момента, не отражаются вos.environ
, за исключением изменений, сделанных путем прямой модификацииos.environ
.Это отображение можно использовать для изменения среды, а также для запроса среды.
putenv()
будет автоматически вызываться при изменении отображения.На Unix ключи и значения используют обработчик ошибок
sys.getfilesystemencoding()
и'surrogateescape'
. Используйтеenvironb
, если вы хотите использовать другую кодировку.Примечание
Вызов
putenv()
напрямую не изменяетos.environ
, поэтому лучше модифицироватьos.environ
.Примечание
На некоторых платформах, включая FreeBSD и macOS, установка
environ
может привести к утечке памяти. Обратитесь к системной документации поputenv()
.Вы можете удалять элементы в этом отображении, чтобы снять настройки переменных окружения.
unsetenv()
будет вызываться автоматически при удалении элемента изos.environ
, а также при вызове одного из методовpop()
илиclear()
.Изменено в версии 3.9: Обновлено для поддержки операторов слияния (PEP 584) и обновления (
|
) в|=
.
-
os.
environb
¶ Байтовая версия
environ
: объект mapping, в котором и ключи, и значения являются объектамиbytes
, представляющими среду процесса.environ
иenvironb
синхронизированы (изменениеenvironb
обновляетenviron
, и наоборот).environb
доступен только в том случае, еслиsupports_bytes_environ
равенTrue
.Добавлено в версии 3.2.
Изменено в версии 3.9: Обновлено для поддержки операторов слияния (PEP 584) и обновления (
|
) в|=
.
-
os.
chdir
(path) -
os.
fchdir
(fd) -
os.
getcwd
() Эти функции описаны в Файлы и каталоги.
-
os.
fsencode
(filename)¶ Перекодируйте path-like filename в filesystem encoding and error handler; верните
bytes
без изменений.fsdecode()
является обратной функцией.Добавлено в версии 3.2.
Изменено в версии 3.6: Добавлена поддержка приема объектов, реализующих интерфейс
os.PathLike
.
-
os.
fsdecode
(filename)¶ Декодируйте path-like имя файла из filesystem encoding and error handler; верните
str
без изменений.fsencode()
является обратной функцией.Добавлено в версии 3.2.
Изменено в версии 3.6: Добавлена поддержка приема объектов, реализующих интерфейс
os.PathLike
.
-
os.
fspath
(path)¶ Возвращает представление пути в файловой системе.
Если передано значение
str
илиbytes
, оно возвращается без изменений. В противном случае вызывается__fspath__()
и возвращается его значение, если это объектstr
илиbytes
. Во всех остальных случаях вызываетсяTypeError
.Добавлено в версии 3.6.
-
class
os.
PathLike
¶ abstract base class для объектов, представляющих путь к файловой системе, например
pathlib.PurePath
.Добавлено в версии 3.6.
-
os.
getenv
(key, default=None)¶ Возвращает значение переменной окружения key, если она существует, или default, если ее нет. key, default и результат являются str. Обратите внимание, что поскольку
getenv()
используетos.environ
, отображениеgetenv()
аналогичным образом также фиксируется при импорте, и функция может не отражать будущие изменения окружения.На Unix ключи и значения декодируются с помощью обработчика ошибок
sys.getfilesystemencoding()
и'surrogateescape'
. Используйтеos.getenvb()
, если вы хотите использовать другую кодировку.Availability: большинство разновидностей Unix, Windows.
-
os.
getenvb
(key, default=None)¶ Возвращает значение переменной окружения key, если она существует, или default, если ее нет. key, default и результат являются байтами. Обратите внимание, что поскольку
getenvb()
используетos.environb
, отображениеgetenvb()
аналогичным образом также фиксируется при импорте, и функция может не отражать будущие изменения окружения.getenvb()
доступен только в том случае, еслиsupports_bytes_environ
равенTrue
.Availability: большинство разновидностей Unix.
Добавлено в версии 3.2.
-
os.
get_exec_path
(env=None)¶ Возвращает список каталогов, в которых при запуске процесса будет производиться поиск именованного исполняемого файла, аналогичного оболочке. env, когда указано, должно быть словарем переменной окружения для поиска PATH. По умолчанию, когда env равно
None
, используетсяenviron
.Добавлено в версии 3.2.
-
os.
getegid
()¶ Возвращает идентификатор эффективной группы текущего процесса. Это соответствует биту «set id» в файле, выполняемом в текущем процессе.
Availability: Unix.
-
os.
geteuid
()¶ Возвращает эффективный идентификатор пользователя текущего процесса.
Availability: Unix.
-
os.
getgid
()¶ Возвращает реальный идентификатор группы текущего процесса.
Availability: Unix.
-
os.
getgrouplist
(user, group)¶ Возвращает список идентификаторов групп, к которым принадлежит user. Если group нет в списке, она включается; обычно group указывается как поле ID группы из записи пароля для user.
Availability: Unix.
Добавлено в версии 3.3.
-
os.
getgroups
()¶ Возвращает список идентификаторов дополнительных групп, связанных с текущим процессом.
Availability: Unix.
Примечание
На macOS поведение
getgroups()
несколько отличается от других платформ Unix. Если интерпретатор Python был собран с целью развертывания10.5
или раньше,getgroups()
возвращает список идентификаторов эффективных групп, связанных с текущим пользовательским процессом; этот список ограничен определенным системой количеством записей, обычно 16, и может быть изменен вызовамиsetgroups()
при наличии соответствующих привилегий. Если построено с целью развертывания больше, чем10.5
,getgroups()
возвращает текущий список группового доступа для пользователя, связанного с эффективным идентификатором пользователя процесса; список группового доступа может меняться в течение жизни процесса, на него не влияют вызовыsetgroups()
, и его длина не ограничена 16. Целевое значение развертывания,MACOSX_DEPLOYMENT_TARGET
, может быть получено с помощьюsysconfig.get_config_var()
.
-
os.
getlogin
()¶ Возвращает имя пользователя, вошедшего в систему на управляющем терминале процесса. Для большинства целей полезнее использовать
getpass.getuser()
, поскольку последняя проверяет переменные окруженияLOGNAME
илиUSERNAME
, чтобы выяснить, кто является пользователем, и возвращается кpwd.getpwuid(os.getuid())[0]
, чтобы получить имя входа текущего реального пользователя.Availability: Unix, Windows.
-
os.
getpgid
(pid)¶ Возвращает идентификатор группы процессов процесса с идентификатором процесса pid. Если pid равен 0, возвращается идентификатор группы процессов текущего процесса.
Availability: Unix.
-
os.
getpgrp
()¶ Возвращает идентификатор текущей группы процессов.
Availability: Unix.
-
os.
getpid
()¶ Возвращает идентификатор текущего процесса.
-
os.
getppid
()¶ Возвращает идентификатор родительского процесса. Если родительский процесс завершился, то в Unix возвращаемый id - это id инициированного процесса (1), в Windows - это все тот же id, который может быть повторно использован другим процессом.
Availability: 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 обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.Availability: Unix.
Добавлено в версии 3.3.
-
os.
PRIO_PROCESS
¶ -
os.
PRIO_PGRP
¶ -
os.
PRIO_USER
¶ Параметры для функций
getpriority()
иsetpriority()
.Availability: Unix.
Добавлено в версии 3.3.
-
os.
getresuid
()¶ Возвращает кортеж (ruid, euid, suid), обозначающий реальный, эффективный и сохраненный идентификаторы пользователей текущего процесса.
Availability: Unix.
Добавлено в версии 3.2.
-
os.
getresgid
()¶ Возвращает кортеж (rgid, egid, sgid), обозначающий реальный, эффективный и сохраненный идентификаторы групп текущего процесса.
Availability: Unix.
Добавлено в версии 3.2.
-
os.
getuid
()¶ Возвращает реальный идентификатор пользователя текущего процесса.
Availability: Unix.
-
os.
initgroups
(username, gid)¶ Вызовите системную функцию initgroups() для инициализации списка группового доступа со всеми группами, членом которых является указанное имя пользователя, плюс указанный идентификатор группы.
Availability: Unix.
Добавлено в версии 3.2.
-
os.
putenv
(key, value)¶ Установите переменную окружения с именем key в строку value. Такие изменения среды влияют на подпроцессы, запущенные с помощью
os.system()
,popen()
илиfork()
иexecv()
.Присвоения элементам в
os.environ
автоматически переводятся в соответствующие вызовыputenv()
; однако вызовыputenv()
не обновляютos.environ
, поэтому предпочтительнее присваивать элементам изos.environ
. Это также относится кgetenv()
иgetenvb()
, которые соответственно используютos.environ
иos.environb
в своих реализациях.Примечание
На некоторых платформах, включая FreeBSD и macOS, установка
environ
может привести к утечке памяти. Обратитесь к системной документации поputenv()
.Вызывает auditing event
os.putenv
с аргументамиkey
,value
.Изменено в версии 3.9: Теперь эта функция доступна всегда.
-
os.
setegid
(egid)¶ Установите идентификатор эффективной группы текущего процесса.
Availability: Unix.
-
os.
seteuid
(euid)¶ Установите эффективный идентификатор пользователя текущего процесса.
Availability: Unix.
-
os.
setgid
(gid)¶ Установите идентификатор группы текущего процесса.
Availability: Unix.
-
os.
setgroups
(groups)¶ Установите список идентификаторов дополнительных групп, связанных с текущим процессом, в groups. groups должна быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Эта операция обычно доступна только суперпользователю.
Availability: Unix.
Примечание
В macOS длина groups не должна превышать определенное системой максимальное количество эффективных идентификаторов групп, обычно 16. См. документацию по
getgroups()
для случаев, когда он может возвращать не тот же список групп, который был установлен вызовом setgroups().
-
os.
setpgrp
()¶ Вызвать системный вызов
setpgrp()
илиsetpgrp(0, 0)
в зависимости от того, какая версия реализована (если есть). Семантику см. в руководстве по Unix.Availability: Unix.
-
os.
setpgid
(pid, pgrp)¶ Вызовите системный вызов
setpgid()
для установки идентификатора группы процессов процесса с идентификатором pid в группу процессов с идентификатором pgrp. Семантику см. в руководстве по Unix.Availability: Unix.
-
os.
setpriority
(which, who, priority)¶ Установить приоритет планирования программы. Значение which является одним из
PRIO_PROCESS
,PRIO_PGRP
илиPRIO_USER
, а who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS
, идентификатор группы процессов дляPRIO_PGRP
и идентификатор пользователя дляPRIO_USER
). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. приоритет - это значение в диапазоне от -20 до 19. По умолчанию приоритет равен 0; более низкие приоритеты приводят к более благоприятному планированию.Availability: Unix.
Добавлено в версии 3.3.
-
os.
setregid
(rgid, egid)¶ Установите идентификаторы реальной и эффективной групп текущего процесса.
Availability: Unix.
-
os.
setresgid
(rgid, egid, sgid)¶ Установите идентификаторы реальной, эффективной и сохраненной группы текущего процесса.
Availability: Unix.
Добавлено в версии 3.2.
-
os.
setresuid
(ruid, euid, suid)¶ Установите реальные, эффективные и сохраненные идентификаторы пользователей текущего процесса.
Availability: Unix.
Добавлено в версии 3.2.
-
os.
setreuid
(ruid, euid)¶ Установите реальные и эффективные идентификаторы пользователей текущего процесса.
Availability: Unix.
-
os.
getsid
(pid)¶ Вызовите системный вызов
getsid()
. Семантику см. в руководстве по Unix.Availability: Unix.
-
os.
setsid
()¶ Вызовите системный вызов
setsid()
. Семантику см. в руководстве по Unix.Availability: Unix.
-
os.
setuid
(uid)¶ Установите идентификатор пользователя текущего процесса.
Availability: Unix.
-
os.
strerror
(code)¶ Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где
strerror()
возвращаетNULL
при неизвестном номере ошибки, выдается сообщениеValueError
.
-
os.
supports_bytes_environ
¶ True
если родной тип ОС среды - байт (например,False
в Windows).Добавлено в версии 3.2.
-
os.
umask
(mask)¶ Установить текущую числовую маску и вернуть предыдущую маску.
-
os.
uname
()¶ Возвращает информацию, идентифицирующую текущую операционную систему. Возвращаемое значение представляет собой объект с пятью атрибутами:
sysname
- имя операционной системыnodename
- имя машины в сети (определяется реализацией)release
- выпуск операционной системыversion
- версия операционной системыmachine
- идентификатор оборудования
Для обратной совместимости этот объект также является итерируемым и ведет себя как кортеж, содержащий
sysname
,nodename
,release
,version
иmachine
в таком порядке.Некоторые системы усекают
nodename
до 8 символов или до ведущего компонента; лучший способ получить имя хоста -socket.gethostname()
или дажеsocket.gethostbyaddr(socket.gethostname())
.Availability: последние версии Unix.
Изменено в версии 3.3: Тип возврата изменен с кортежа на кортежеподобный объект с именованными атрибутами.
-
os.
unsetenv
(key)¶ Снять (удалить) переменную окружения с именем key. Такие изменения среды влияют на подпроцессы, запущенные с помощью
os.system()
,popen()
илиfork()
иexecv()
.Удаление элементов в
os.environ
автоматически транслируется в соответствующий вызовunsetenv()
; однако вызовыunsetenv()
не обновляютos.environ
, поэтому предпочтительнее удалять элементы изos.environ
.Вызывает auditing event
os.unsetenv
с аргументомkey
.Изменено в версии 3.9: Теперь эта функция доступна всегда и также доступна в Windows.
Создание объекта файла¶
Эти функции создают новые file objects. (См. также open()
для открытия дескрипторов файлов).
Операции с дескрипторами файлов¶
Эти функции работают с потоками ввода-вывода, на которые ссылаются файловые дескрипторы.
Дескрипторы файлов - это небольшие целые числа, соответствующие файлу, который был открыт текущим процессом. Например, стандартный ввод обычно является дескриптором файла 0, стандартный вывод - 1, а стандартная ошибка - 2. Последующим файлам, открытым процессом, присваивается значение 3, 4, 5 и т.д. Название «файловый дескриптор» немного обманчиво; сокеты и трубы также ссылаются на файловые дескрипторы. Название «файловый дескриптор» несколько обманчиво; на платформах Unix сокеты и трубы также обозначаются файловыми дескрипторами.
Метод fileno()
может быть использован для получения дескриптора файла, связанного с file object, когда это необходимо. Обратите внимание, что использование дескриптора файла напрямую позволяет обойти методы объекта файла, игнорируя такие аспекты, как внутренняя буферизация данных.
-
os.
close
(fd)¶ Закрыть дескриптор файла fd.
-
os.
closerange
(fd_low, fd_high)¶ Закрытие всех файловых дескрипторов от fd_low (включительно) до fd_high (включительно), игнорируя ошибки. Эквивалентно (но гораздо быстрее):
for fd in range(fd_low, fd_high): try: os.close(fd) except OSError: pass
-
os.
copy_file_range
(src, dst, count, offset_src=None, offset_dst=None)¶ Копирование count байт из дескриптора файла src, начиная со смещения offset_src, в дескриптор файла dst, начиная со смещения offset_dst. Если offset_src равно None, то src считывается с текущей позиции; соответственно для offset_dst. Файлы, на которые указывают src и dst, должны находиться в одной и той же файловой системе, иначе будет вызвана ошибка
OSError
сerrno
, установленным вerrno.EXDEV
.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя, а затем обратно в ядро. Кроме того, некоторые файловые системы могут реализовать дополнительную оптимизацию. Копия выполняется так, как если бы оба файла были открыты как двоичные.
Возвращаемое значение - количество скопированных байтов. Оно может быть меньше, чем запрошенное количество.
Availability: Ядро Linux >= 4.5 или glibc >= 2.27.
Добавлено в версии 3.8.
-
os.
device_encoding
(fd)¶ Возвращает строку, описывающую кодировку устройства, связанного с fd, если оно подключено к терминалу; в противном случае возвращает
None
.На Unix, если включено Python UTF-8 Mode, возвращается
'UTF-8'
, а не кодировка устройства.Изменено в версии 3.10: На Unix функция теперь реализует режим Python UTF-8 Mode.
-
os.
dup
(fd)¶ Возвращает дубликат файлового дескриптора fd. Новый файловый дескриптор будет non-inheritable.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новый дескриптор файла имеет вид inheritable.
Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
-
os.
dup2
(fd, fd2, inheritable=True)¶ Дублируйте дескриптор файла fd в fd2, при необходимости закрывая последний первым. Вернуть fd2. Новый файловый дескриптор по умолчанию inheritable или ненаследуемый, если inheritable равно
False
.Изменено в версии 3.4: Добавьте необязательный параметр inheritable.
Изменено в версии 3.7: Возвращает fd2 при успехе. Ранее всегда возвращалось
None
.
-
os.
fchmod
(fd, mode)¶ Изменить режим файла, заданного fd, на числовой mode. Возможные значения mode см. в документации для
chmod()
. Начиная с Python 3.3, это эквивалентноos.chmod(fd, mode)
.Вызывает auditing event
os.chmod
с аргументамиpath
,mode
,dir_fd
.Availability: Unix.
-
os.
fchown
(fd, uid, gid)¶ Изменить идентификаторы владельца и группы файла, заданного fd, на числовые uid и gid. Чтобы оставить один из идентификаторов неизменным, установите его в -1. См.
chown()
. Начиная с Python 3.3, это эквивалентноos.chown(fd, uid, gid)
.Вызывает auditing event
os.chown
с аргументамиpath
,uid
,gid
,dir_fd
.Availability: Unix.
-
os.
fdatasync
(fd)¶ Принудительная запись файла с файловым дескриптором fd на диск. Не заставляет обновлять метаданные.
Availability: Unix.
Примечание
Эта функция недоступна на MacOS.
-
os.
fpathconf
(fd, name)¶ Возвращает информацию о конфигурации системы, относящуюся к открытому файлу. name указывает значение конфигурации, которое нужно получить; это может быть строка, которая является именем определенного системного значения; эти имена определены в ряде стандартов (POSIX.1, Unix 95, Unix 98 и других). Некоторые платформы определяют и дополнительные имена. Имена, известные операционной системе хоста, приведены в словаре
pathconf_names
. Для конфигурационных переменных, не включенных в это отображение, также принимается передача целого числа для name.Если name является строкой и неизвестно, выдается сообщение
ValueError
. Если конкретное значение для name не поддерживается хост-системой, даже если оно включено вpathconf_names
, выдается сообщениеOSError
с номером ошибкиerrno.EINVAL
.Начиная с Python 3.3, это эквивалентно
os.pathconf(fd, name)
.Availability: Unix.
-
os.
fstat
(fd)¶ Получить статус файлового дескриптора fd. Возвращает объект
stat_result
.Начиная с Python 3.3, это эквивалентно
os.stat(fd)
.См.также
Функция
stat()
.
-
os.
fstatvfs
(fd)¶ Возвращает информацию о файловой системе, содержащей файл, связанный с дескриптором файла fd, как
statvfs()
. Начиная с Python 3.3, это эквивалентноos.statvfs(fd)
.Availability: Unix.
-
os.
fsync
(fd)¶ Принудительная запись файла с файловым дескриптором fd на диск. В Unix для этого вызывается родная функция
fsync()
; в Windows - функция MS_commit()
.Если вы начинаете с буферизованного Python file object f, сначала выполните
f.flush()
, а затемos.fsync(f.fileno())
, чтобы убедиться, что все внутренние буферы, связанные с f, записаны на диск.Availability: Unix, Windows.
-
os.
ftruncate
(fd, length)¶ Усечь файл, соответствующий дескриптору файла fd, так, чтобы его размер был не более length байт. Начиная с Python 3.3, это эквивалентно
os.truncate(fd, length)
.Вызывает auditing event
os.truncate
с аргументамиfd
,length
.Availability: Unix, Windows.
Изменено в версии 3.5: Добавлена поддержка Windows
-
os.
get_blocking
(fd)¶ Получить режим блокировки дескриптора файла:
False
если установлен флагO_NONBLOCK
,True
если флаг сброшен.См. также
set_blocking()
иsocket.socket.setblocking()
.Availability: Unix.
Добавлено в версии 3.5.
-
os.
isatty
(fd)¶ Возвращает
True
, если файловый дескриптор fd открыт и подключен к устройству tty(-like), иначеFalse
.
-
os.
lockf
(fd, cmd, len)¶ Наложение, проверка или снятие POSIX-блокировки на дескриптор открытого файла. fd - дескриптор открытого файла. cmd указывает команду для использования - одну из
F_LOCK
,F_TLOCK
,F_ULOCK
илиF_TEST
. len указывает раздел файла для блокировки.Вызывает auditing event
os.lockf
с аргументамиfd
,cmd
,len
.Availability: Unix.
Добавлено в версии 3.3.
-
os.
F_LOCK
¶ -
os.
F_TLOCK
¶ -
os.
F_ULOCK
¶ -
os.
F_TEST
¶ Флаги, определяющие, какое действие будет предпринято
lockf()
.Availability: 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 сначала маскируется. Вернуть дескриптор файла для только что открытого файла. Дескриптор нового файла - это non-inheritable.
Описание значений флагов и режимов см. в документации по времени выполнения C; константы флагов (такие как
O_RDONLY
иO_WRONLY
) определены в модулеos
. В частности, в Windows добавлениеO_BINARY
необходимо для открытия файлов в двоичном режиме.Эта функция может поддерживать paths relative to directory descriptors с параметром dir_fd.
Вызывает auditing event
open
с аргументамиpath
,mode
,flags
.Изменено в версии 3.4: Новый файловый дескриптор теперь не наследуется.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода. Для обычного использования используйте встроенную функцию
open()
, которая возвращает file object с методамиread()
иwrite()
(и многими другими). Чтобы завернуть дескриптор файла в объект файла, используйтеfdopen()
.Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключения, функция теперь повторяет системный вызов вместо того, чтобы вызвать исключение
InterruptedError
(см. обоснование в PEP 475).Изменено в версии 3.6: Принимает path-like object.
Следующие константы являются опциями для параметра flags функции open()
. Их можно объединить с помощью оператора побитового ИЛИ |
. Некоторые из них доступны не на всех платформах. Описание их наличия и использования можно найти на странице руководства open(2) на Unix или the MSDN на Windows.
-
os.
O_RDONLY
¶ -
os.
O_WRONLY
¶ -
os.
O_RDWR
¶ -
os.
O_APPEND
¶ -
os.
O_CREAT
¶ -
os.
O_EXCL
¶ -
os.
O_TRUNC
¶ Приведенные выше константы доступны в Unix и Windows.
-
os.
O_DSYNC
¶ -
os.
O_RSYNC
¶ -
os.
O_SYNC
¶ -
os.
O_NDELAY
¶ -
os.
O_NONBLOCK
¶ -
os.
O_NOCTTY
¶ -
os.
O_CLOEXEC
¶ Приведенные выше константы доступны только в Unix.
Изменено в версии 3.3: Добавьте константу
O_CLOEXEC
.
-
os.
O_BINARY
¶ -
os.
O_NOINHERIT
¶ -
os.
O_SHORT_LIVED
¶ -
os.
O_TEMPORARY
¶ -
os.
O_RANDOM
¶ -
os.
O_SEQUENTIAL
¶ -
os.
O_TEXT
¶ Вышеуказанные константы доступны только в Windows.
-
os.
O_EVTONLY
¶ -
os.
O_FSYNC
¶ -
os.
O_SYMLINK
¶ -
os.
O_NOFOLLOW_ANY
¶ Приведенные выше константы доступны только на macOS.
Изменено в версии 3.10: Добавьте константы
O_EVTONLY
,O_FSYNC
,O_SYMLINK
иO_NOFOLLOW_ANY
.
-
os.
O_ASYNC
¶ -
os.
O_DIRECT
¶ -
os.
O_DIRECTORY
¶ -
os.
O_NOFOLLOW
¶ -
os.
O_NOATIME
¶ -
os.
O_PATH
¶ -
os.
O_TMPFILE
¶ -
os.
O_SHLOCK
¶ -
os.
O_EXLOCK
¶ Приведенные выше константы являются расширениями и не присутствуют, если они не определены библиотекой C.
-
os.
openpty
()¶ Открыть новую пару псевдотерминалов. Возвращает пару файловых дескрипторов
(master, slave)
для pty и tty, соответственно. Новые дескрипторы файлов будут non-inheritable. Для (немного) более переносимого подхода используйте модульpty
.Availability: некоторые разновидности Unix.
Изменено в версии 3.4: Новые файловые дескрипторы теперь не наследуются.
-
os.
pipe
()¶ Создать трубу. Возвращает пару файловых дескрипторов
(r, w)
, пригодных для чтения и записи соответственно. Новый дескриптор файла будет non-inheritable.Availability: Unix, Windows.
Изменено в версии 3.4: Новые файловые дескрипторы теперь не наследуются.
-
os.
pipe2
(flags)¶ Создайте трубу с флагами, установленными атомарно. флаги могут быть сконструированы путем OR вместе с одним или несколькими из этих значений:
O_NONBLOCK
,O_CLOEXEC
. Возвращает пару файловых дескрипторов(r, w)
, пригодных для чтения и записи, соответственно.Availability: некоторые разновидности Unix.
Добавлено в версии 3.3.
-
os.
posix_fallocate
(fd, offset, len)¶ Обеспечивает выделение достаточного дискового пространства для файла, указанного fd, начиная с offset и далее на протяжении len байт.
Availability: 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
.Availability: 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
¶ Флаги, которые могут быть использованы в советах в
posix_fadvise()
, указывающих на шаблон доступа, который, вероятно, будет использоваться.Availability: Unix.
Добавлено в версии 3.3.
-
os.
pread
(fd, n, offset)¶ Прочитать не более n байт из дескриптора файла fd в позиции offset, оставляя смещение файла неизменным.
Возвращает строку байтов, содержащую считанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустой объект bytes.
Availability: Unix.
Добавлено в версии 3.3.
-
os.
preadv
(fd, buffers, offset, flags=0)¶ Чтение из дескриптора файла fd в позиции offset в изменяемые bytes-like objects буферы, оставляя смещение файла неизменным. Передавайте данные в каждый буфер, пока он не заполнится, а затем переходите к следующему буферу в последовательности для хранения оставшихся данных.
Аргумент flags содержит побитовое OR из нуля или более следующих флагов:
Возвращает общее количество фактически прочитанных байт, которое может быть меньше, чем общая емкость всех объектов.
Операционная система может установить ограничение (значение
sysconf()
'SC_IOV_MAX'
) на количество буферов, которые могут быть использованы.Объединяет функциональность
os.readv()
иos.pread()
.Availability: Linux 2.6.30 и новее, FreeBSD 6.0 и новее, OpenBSD 2.7 и новее, AIX 7.1 и новее. Для использования флагов требуется Linux 4.6 или новее.
Добавлено в версии 3.7.
-
os.
RWF_NOWAIT
¶ Не ждать данных, которые не доступны немедленно. Если этот флаг указан, системный вызов вернется мгновенно, если ему пришлось бы считывать данные из резервного хранилища или ждать блокировки.
Если некоторые данные были успешно прочитаны, то будет возвращено количество прочитанных байт. Если не было прочитано ни одного байта, то будет возвращено
-1
и установлено значение errnoerrno.EAGAIN
.Availability: Linux 4.14 и новее.
Добавлено в версии 3.7.
-
os.
RWF_HIPRI
¶ Высокоприоритетное чтение/запись. Позволяет файловым системам на основе блоков использовать опрос устройства, что обеспечивает меньшую задержку, но может использовать дополнительные ресурсы.
В настоящее время в Linux эта функция доступна только для файлового дескриптора, открытого с помощью флага
O_DIRECT
.Availability: Linux 4.6 и новее.
Добавлено в версии 3.7.
-
os.
pwrite
(fd, str, offset)¶ Запись байтовой строки в str в дескриптор файла fd в позицию offset, оставляя смещение файла неизменным.
Возвращает количество фактически записанных байтов.
Availability: Unix.
Добавлено в версии 3.3.
-
os.
pwritev
(fd, buffers, offset, flags=0)¶ Записать содержимое буферов в дескриптор файла fd по смещению offset, оставляя смещение файла неизменным. Буферы должны быть последовательностью bytes-like objects. Буферы обрабатываются в порядке массива. Все содержимое первого буфера записывается перед тем, как перейти ко второму, и так далее.
Аргумент flags содержит побитовое OR из нуля или более следующих флагов:
Возвращает общее количество фактически записанных байтов.
Операционная система может установить ограничение (значение
sysconf()
'SC_IOV_MAX'
) на количество буферов, которые могут быть использованы.Объединяет функциональность
os.writev()
иos.pwrite()
.Availability: Linux 2.6.30 и новее, FreeBSD 6.0 и новее, OpenBSD 2.7 и новее, AIX 7.1 и новее. Для использования флагов требуется Linux 4.7 или новее.
Добавлено в версии 3.7.
-
os.
RWF_DSYNC
¶ Предоставляет эквивалент флага
O_DSYNC
os.open()
на каждую запись. Действие этого флага распространяется только на диапазон данных, записанных системным вызовом.Availability: Linux 4.7 и новее.
Добавлено в версии 3.7.
-
os.
RWF_SYNC
¶ Предоставляет эквивалент флага
O_SYNC
os.open()
на каждую запись. Действие этого флага распространяется только на диапазон данных, записанных системным вызовом.Availability: Linux 4.7 и новее.
Добавлено в версии 3.7.
-
os.
RWF_APPEND
¶ Предоставляет эквивалент флага
O_APPEND
os.open()
для каждой записи. Этот флаг имеет значение только дляos.pwritev()
, и его действие распространяется только на диапазон данных, записываемых системным вызовом. Аргумент offset не влияет на операцию записи; данные всегда добавляются в конец файла. Однако, если аргумент offset равен-1
, текущее offset файла обновляется.Availability: Linux 4.16 и новее.
Добавлено в версии 3.10.
-
os.
read
(fd, n)¶ Считывание не более n байт из дескриптора файла fd.
Возвращает строку байтов, содержащую считанные байты. Если достигнут конец файла, на который ссылается fd, возвращается пустой объект bytes.
Примечание
Эта функция предназначена для низкоуровневого ввода-вывода и должна применяться к дескриптору файла, возвращенному функцией
os.open()
илиpipe()
. Для чтения «объекта файла», возвращаемого встроенной функциейopen()
илиpopen()
, илиfdopen()
, илиsys.stdin
, используйте ее методыread()
илиreadline()
.Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключения, функция теперь повторяет системный вызов вместо того, чтобы вызвать исключение
InterruptedError
(см. обоснование в PEP 475).
-
os.
sendfile
(out_fd, in_fd, offset, count)¶ -
os.
sendfile
(out_fd, in_fd, offset, count, headers=(), trailers=(), flags=0) Скопировать count байт из дескриптора файла in_fd в дескриптор файла out_fd, начиная с offset. Верните количество отправленных байт. При достижении EOF возвращается
0
.Первая нотация функции поддерживается всеми платформами, которые определяют
sendfile()
.В Linux, если offset задан как
None
, байты считываются из текущей позиции in_fd и позиция in_fd обновляется.Второй случай может использоваться в macOS и FreeBSD, где headers и trailers - это произвольные последовательности буферов, которые записываются до и после записи данных из in_fd. Возвращается то же самое, что и в первом случае.
В macOS и FreeBSD значение
0
для count указывает отправлять до тех пор, пока не будет достигнут конец in_fd.Все платформы поддерживают сокеты как out_fd файловый дескриптор, а некоторые платформы допускают и другие типы (например, обычный файл, pipe).
Кроссплатформенные приложения не должны использовать аргументы headers, trailers и flags.
Availability: Unix.
Примечание
Для более высокоуровневой обертки
sendfile()
смотритеsocket.socket.sendfile()
.Добавлено в версии 3.3.
Изменено в версии 3.9: Параметры out и in были переименованы в out_fd и in_fd.
-
os.
set_blocking
(fd, blocking)¶ Установить режим блокировки указанного файлового дескриптора. Установите флаг
O_NONBLOCK
, если блокировкаFalse
, снимите флаг в противном случае.См. также
get_blocking()
иsocket.socket.setblocking()
.Availability: Unix.
Добавлено в версии 3.5.
-
os.
SF_NODISKIO
¶ -
os.
SF_MNOWAIT
¶ -
os.
SF_SYNC
¶ Параметры для функции
sendfile()
, если реализация поддерживает их.Availability: Unix.
Добавлено в версии 3.3.
-
os.
splice
(src, dst, count, offset_src=None, offset_dst=None)¶ Передать count байт из дескриптора файла src, начиная со смещения offset_src, в дескриптор файла dst, начиная со смещения offset_dst. По крайней мере один из дескрипторов файла должен ссылаться на трубу. Если offset_src равно None, то src считывается с текущей позиции; соответственно для offset_dst. Смещение, связанное с дескриптором файла, который ссылается на трубу, должно быть
None
. Файлы, на которые указывают src и dst, должны находиться в одной и той же файловой системе, иначе будет выдано сообщениеOSError
сerrno
, установленным вerrno.EXDEV
.Это копирование выполняется без дополнительных затрат на передачу данных из ядра в пространство пользователя, а затем обратно в ядро. Кроме того, некоторые файловые системы могут реализовать дополнительную оптимизацию. Копия выполняется так, как если бы оба файла были открыты как двоичные.
При успешном завершении возвращает количество байтов, переданных в или из трубы. Возвращаемое значение 0 означает конец ввода. Если src относится к трубе, то это означает, что данных для передачи не было, и блокировка не имеет смысла, так как к пишущему концу трубы не подключены пишущие устройства.
Availability: Ядро Linux >= 2.6.17 и glibc >= 2.5
Добавлено в версии 3.10.
-
os.
readv
(fd, buffers)¶ Чтение из дескриптора файла fd в несколько изменяемых bytes-like objects буферов. Передавайте данные в каждый буфер, пока он не заполнится, а затем переходите к следующему буферу в последовательности для хранения оставшихся данных.
Возвращает общее количество фактически прочитанных байт, которое может быть меньше, чем общая емкость всех объектов.
Операционная система может установить ограничение (значение
sysconf()
'SC_IOV_MAX'
) на количество буферов, которые могут быть использованы.Availability: Unix.
Добавлено в версии 3.3.
-
os.
tcgetpgrp
(fd)¶ Возвращает группу процессов, связанную с терминалом, заданным fd (дескриптор открытого файла, возвращаемый командой
os.open()
).Availability: Unix.
-
os.
tcsetpgrp
(fd, pg)¶ Установите группу процессов, связанную с терминалом, заданным fd (открытый дескриптор файла, возвращаемый командой
os.open()
), на pg.Availability: Unix.
-
os.
ttyname
(fd)¶ Возвращает строку, определяющую терминальное устройство, связанное с дескриптором файла fd. Если fd не ассоциирован с терминальным устройством, возникает исключение.
Availability: 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)¶ Запишите содержимое буферов в дескриптор файла fd. буферы должны быть последовательностью bytes-like objects. Буферы обрабатываются в порядке массива. Все содержимое первого буфера записывается перед тем, как перейти ко второму, и так далее.
Возвращает общее количество фактически записанных байтов.
Операционная система может установить ограничение (значение
sysconf()
'SC_IOV_MAX'
) на количество буферов, которые могут быть использованы.Availability: Unix.
Добавлено в версии 3.3.
Запрос размера терминала¶
Добавлено в версии 3.3.
-
os.
get_terminal_size
(fd=STDOUT_FILENO)¶ Возвращает размер окна терминала как
(columns, lines)
, кортеж типаterminal_size
.Дополнительный аргумент
fd
(по умолчаниюSTDOUT_FILENO
, или стандартный вывод) указывает, какой дескриптор файла должен быть запрошен.Если дескриптор файла не подключен к терминалу, выдается сообщение
OSError
.shutil.get_terminal_size()
- функция высокого уровня, которая обычно должна использоваться,os.get_terminal_size
- низкоуровневая реализация.Availability: Unix, Windows.
Наследование файловых дескрипторов¶
Добавлено в версии 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)¶ Получение флага «наследуемости» указанного хэндла (булева величина).
Availability: Windows.
-
os.
set_handle_inheritable
(handle, inheritable)¶ Устанавливает флаг «наследуемый» указанного дескриптора.
Availability: Windows.
Файлы и каталоги¶
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из этих возможностей:
указание дескриптора файла: Обычно аргумент path, предоставляемый функциям модуля
os
, должен быть строкой, указывающей путь к файлу. Однако некоторые функции теперь альтернативно принимают в качестве аргумента path дескриптор открытого файла. Тогда функция будет работать с файлом, на который ссылается дескриптор. (Для систем POSIX Python будет вызывать вариант функции с префиксомf
(например, вызовитеfchdir
вместоchdir
)).Вы можете проверить, можно ли указать path в качестве дескриптора файла для определенной функции на вашей платформе, используя
os.supports_fd
. Если эта функция недоступна, ее использование вызовет ошибкуNotImplementedError
.Если функция также поддерживает аргументы dir_fd или follow_symlinks, будет ошибкой указать один из них при передаче path в качестве дескриптора файла.
пути относительно дескрипторов каталогов: Если dir_fd не
None
, то это должен быть дескриптор файла, ссылающийся на каталог, а путь для работы должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь абсолютный, dir_fd игнорируется. (Для систем POSIX Python будет вызывать вариант функции с суффиксомat
и, возможно, с префиксомf
(например, вызыватьfaccessat
вместоaccess
).Вы можете проверить, поддерживается ли dir_fd для определенной функции на вашей платформе, используя
os.supports_dir_fd
. Если он недоступен, его использование вызовет ошибкуNotImplementedError
.
не следовать симлинкам: Если follow_symlinks имеет значение
False
, а последний элемент пути, над которым нужно работать, является символической ссылкой, то функция будет работать над самой символической ссылкой, а не над файлом, на который указывает ссылка. (Для POSIX-систем Python будет вызывать вариант функцииl...
).Вы можете проверить, поддерживается ли follow_symlinks для определенной функции на вашей платформе, используя
os.supports_follow_symlinks
. Если она недоступна, ее использование вызовет ошибкуNotImplementedError
.
-
os.
access
(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶ Используйте реальный uid/gid для проверки доступа к пути. Обратите внимание, что большинство операций будет использовать эффективный uid/gid, поэтому эту процедуру можно использовать в среде suid/sgid для проверки, имеет ли вызывающий пользователь указанный доступ к пути. mode должен быть
F_OK
для проверки существования пути, или это может быть инклюзивное ИЛИ одного или более изR_OK
,W_OK
иX_OK
для проверки прав доступа. ВозвращаетTrue
, если доступ разрешен,False
, если нет. Дополнительную информацию см. на странице Unix man access(2).Эта функция может поддерживать указание paths relative to directory descriptors и not following symlinks.
Если effective_ids равно
True
,access()
будет выполнять проверку доступа, используя эффективный uid/gid вместо реального uid/gid. effective_ids может не поддерживаться на вашей платформе; вы можете проверить, доступен ли он, используяos.supports_effective_ids
. Если он недоступен, его использование вызовет ошибкуNotImplementedError
.Примечание
Использование
access()
для проверки того, авторизован ли пользователь, например, для открытия файла, до того, как он сделает это с помощьюopen()
, создает брешь в безопасности, поскольку пользователь может использовать короткий промежуток времени между проверкой и открытием файла для манипуляций с ним. Предпочтительнее использовать технику EAFP. Например:if os.access("myfile", os.R_OK): with open("myfile") as fp: return fp.read() return "some default data"
лучше записать как:
try: fp = open("myfile") except PermissionError: return "some default data" else: with fp: return fp.read()
Примечание
Операции ввода-вывода могут завершиться неудачей, даже если
access()
показывает, что они будут успешными, особенно для операций с сетевыми файловыми системами, которые могут иметь семантику разрешений, выходящую за рамки обычной модели битов разрешений POSIX.Изменено в версии 3.3: Добавлены параметры dir_fd, effective_ids и follow_symlinks.
Изменено в версии 3.6: Принимает path-like object.
-
os.
F_OK
¶ -
os.
R_OK
¶ -
os.
W_OK
¶ -
os.
X_OK
¶ Значения, передаваемые в качестве параметра mode в
access()
для проверки существования, читаемости, записываемости и исполняемости пути, соответственно.
-
os.
chdir
(path)¶ Изменить текущий рабочий каталог на path.
Эта функция может поддерживать specifying a file descriptor. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл.
Эта функция может поднимать
OSError
и подклассы, такие какFileNotFoundError
,PermissionError
иNotADirectoryError
.Вызывает auditing event
os.chdir
с аргументомpath
.Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора файла на некоторых платформах.
Изменено в версии 3.6: Принимает path-like object.
-
os.
chflags
(path, flags, *, follow_symlinks=True)¶ Установите флаги path в числовое значение flags. флаги могут принимать комбинацию (побитовое ИЛИ) следующих значений (как определено в модуле
stat
):Эта функция может поддерживать not following symlinks.
Вызывает auditing event
os.chflags
с аргументамиpath
,flags
.Availability: Unix.
Добавлено в версии 3.3: Аргумент follow_symlinks.
Изменено в версии 3.6: Принимает path-like object.
-
os.
chmod
(path, mode, *, dir_fd=None, follow_symlinks=True)¶ Изменить режим пути на числовой режим. mode может принимать одно из следующих значений (как определено в модуле
stat
) или их побитовые комбинации:Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.
Примечание
Хотя Windows поддерживает
chmod()
, с его помощью можно установить только флаг файла только для чтения (через константыstat.S_IWRITE
иstat.S_IREAD
или соответствующее целочисленное значение). Все остальные биты игнорируются.Вызывает auditing event
os.chmod
с аргументамиpath
,mode
,dir_fd
.Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также аргументов dir_fd и follow_symlinks.
Изменено в версии 3.6: Принимает path-like object.
-
os.
chown
(path, uid, gid, *, dir_fd=None, follow_symlinks=True)¶ Измените идентификаторы владельца и группы path на числовые uid и gid. Чтобы оставить один из идентификаторов неизменным, установите его в -1.
Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.
См.
shutil.chown()
для функции более высокого уровня, которая принимает имена в дополнение к числовым идентификаторам.Вызывает auditing event
os.chown
с аргументамиpath
,uid
,gid
,dir_fd
.Availability: Unix.
Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также аргументов dir_fd и follow_symlinks.
Изменено в версии 3.6: Поддерживает path-like object.
-
os.
chroot
(path)¶ Изменить корневой каталог текущего процесса на path.
Availability: Unix.
Изменено в версии 3.6: Принимает path-like object.
-
os.
fchdir
(fd)¶ Изменить текущий рабочий каталог на каталог, представленный дескриптором файла fd. Дескриптор должен ссылаться на открытый каталог, а не на открытый файл. Начиная с Python 3.3, это эквивалентно
os.chdir(fd)
.Вызывает auditing event
os.chdir
с аргументомpath
.Availability: Unix.
-
os.
getcwd
()¶ Возвращает строку, представляющую текущий рабочий каталог.
-
os.
getcwdb
()¶ Возвращает строку байтов, представляющую текущий рабочий каталог.
Изменено в версии 3.8: Функция теперь использует кодировку UTF-8 в Windows, а не кодовую страницу ANSI: обоснование см. в PEP 529. Функция больше не является устаревшей в Windows.
-
os.
lchflags
(path, flags)¶ Установить флаги path в числовые flags, как
chflags()
, но не следовать символическим ссылкам. Начиная с Python 3.3, это эквивалентноos.chflags(path, flags, follow_symlinks=False)
.Вызывает auditing event
os.chflags
с аргументамиpath
,flags
.Availability: Unix.
Изменено в версии 3.6: Принимает path-like object.
-
os.
lchmod
(path, mode)¶ Изменить режим пути на числовой mode. Если путь является симлинком, это влияет на симлинк, а не на цель. Возможные значения mode см. в документации для
chmod()
. Начиная с Python 3.3, это эквивалентноos.chmod(path, mode, follow_symlinks=False)
.Вызывает auditing event
os.chmod
с аргументамиpath
,mode
,dir_fd
.Availability: Unix.
Изменено в версии 3.6: Принимает path-like object.
-
os.
lchown
(path, uid, gid)¶ Измените идентификатор владельца и группы path на числовые uid и gid. Эта функция не будет следовать символическим ссылкам. Начиная с Python 3.3, это эквивалентно
os.chown(path, uid, gid, follow_symlinks=False)
.Вызывает auditing event
os.chown
с аргументамиpath
,uid
,gid
,dir_fd
.Availability: Unix.
Изменено в версии 3.6: Принимает path-like object.
-
os.
link
(src, dst, *, src_dir_fd=None, dst_dir_fd=None, follow_symlinks=True)¶ Создайте жесткую ссылку, указывающую на src с именем dst.
Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для обеспечения paths relative to directory descriptors, и not following symlinks.
Вызывает auditing event
os.link
с аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Availability: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка Windows.
Добавлено в версии 3.3: Добавлены аргументы src_dir_fd, dst_dir_fd и follow_symlinks.
Изменено в версии 3.6: Принимает path-like object для src и dst.
-
os.
listdir
(path='.')¶ Возвращает список, содержащий имена записей в каталоге, заданном path. Список располагается в произвольном порядке и не включает специальные записи
'.'
и'..'
, даже если они присутствуют в каталоге. Если во время вызова этой функции файл удаляется из каталога или добавляется в него, включается ли в список имя этого файла, не определено.path может быть типом path-like object. Если path имеет тип
bytes
(прямо или косвенно через интерфейсPathLike
), возвращаемые имена файлов также будут иметь типbytes
; во всех остальных случаях они будут иметь типstr
.Эта функция также может поддерживать specifying a file descriptor; дескриптор файла должен ссылаться на каталог.
Вызывает auditing event
os.listdir
с аргументомpath
.Примечание
Чтобы закодировать имена файлов
str
вbytes
, используйтеfsencode()
.См.также
Функция
scandir()
возвращает записи каталога вместе с информацией об атрибутах файла, что обеспечивает лучшую производительность для многих распространенных случаев использования.Изменено в версии 3.2: Параметр path стал необязательным.
Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла.
Изменено в версии 3.6: Принимает path-like object.
-
os.
lstat
(path, *, dir_fd=None)¶ Выполнить эквивалент системного вызова
lstat()
по заданному пути. Аналогичноstat()
, но не выполняет символические ссылки. Возвращает объектstat_result
.На платформах, не поддерживающих символические ссылки, это псевдоним для
stat()
.Начиная с Python 3.3, это эквивалентно
os.stat(path, dir_fd=dir_fd, follow_symlinks=False)
.Эта функция также может поддерживать paths relative to directory descriptors.
См.также
Функция
stat()
.Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd.
Изменено в версии 3.6: Принимает path-like object.
Изменено в версии 3.8: В Windows теперь открывает точки разбора, представляющие другой путь (суррогаты имен), включая символические ссылки и перекрестки каталогов. Другие виды точек разбора разрешаются операционной системой, как и для
stat()
.
-
os.
mkdir
(path, mode=0o777, *, dir_fd=None)¶ Создайте каталог с именем path с числовым режимом mode.
Если каталог уже существует, выдается сообщение
FileExistsError
. Если родительский каталог в пути не существует, выдается сообщениеFileNotFoundError
.В некоторых системах mode игнорируется. Там, где он используется, текущее значение umask сначала маскируется. Если установлены биты, отличные от последних 9 (т.е. последние 3 цифры восьмеричного представления mode), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать
chmod()
.Эта функция также может поддерживать paths relative to directory descriptors.
Также можно создавать временные каталоги; см. функцию
tempfile
модуляtempfile.mkdtemp()
.Вызывает auditing event
os.mkdir
с аргументамиpath
,mode
,dir_fd
.Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
os.
makedirs
(name, mode=0o777, exist_ok=False)¶ Рекурсивная функция создания каталога. Подобна
mkdir()
, но создает все каталоги промежуточного уровня, необходимые для содержания листьевого каталога.Параметр mode передается в
mkdir()
для создания листа каталога; как он интерпретируется, смотрите the mkdir() description. Чтобы установить биты разрешения файлов любых вновь созданных родительских каталогов, вы можете установить umask перед вызовомmakedirs()
. Биты разрешения файлов существующих родительских каталогов не изменяются.Если exist_ok имеет значение
False
(по умолчанию), если целевой каталог уже существует, будет выдано сообщениеFileExistsError
.Примечание
makedirs()
запутается, если создаваемые элементы пути включаютpardir
(например, «.» в системах UNIX).Эта функция корректно обрабатывает UNC-пути.
Вызывает auditing event
os.mkdir
с аргументамиpath
,mode
,dir_fd
.Добавлено в версии 3.2: Параметр exist_ok.
Изменено в версии 3.4.1: До Python 3.4.1, если exist_ok был
True
и каталог существовал,makedirs()
все равно выдавал ошибку, если mode не совпадал с режимом существующего каталога. Поскольку такое поведение было невозможно реализовать безопасно, оно было удалено в Python 3.4.1. См. bpo-21082.Изменено в версии 3.6: Принимает path-like object.
Изменено в версии 3.7: Аргумент mode больше не влияет на биты разрешения файлов вновь созданных каталогов промежуточного уровня.
-
os.
mkfifo
(path, mode=0o666, *, dir_fd=None)¶ Создайте FIFO (именованную трубу) с именем path и числовым режимом mode. Сначала из режима маскируется текущее значение umask.
Эта функция также может поддерживать paths relative to directory descriptors.
FIFO - это трубы, к которым можно обращаться как к обычным файлам. FIFO существуют до тех пор, пока они не будут удалены (например, с помощью команды
os.unlink()
). Как правило, FIFO используются в качестве рандеву между процессами типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, чтоmkfifo()
не открывает FIFO - он просто создает точку рандеву.Availability: Unix.
Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
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()
), иначе игнорируется.Эта функция также может поддерживать paths relative to directory descriptors.
Availability: Unix.
Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
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
.Эта функция может поддерживать specifying a file descriptor.
Availability: Unix.
Изменено в версии 3.6: Принимает path-like object.
-
os.
pathconf_names
¶ Словарь, отображающий имена, принимаемые
pathconf()
иfpathconf()
, на целочисленные значения, определенные для этих имен операционной системой хоста. Это можно использовать для определения набора имен, известных системе.Availability: Unix.
-
os.
readlink
(path, *, dir_fd=None)¶ Возвращает строку, представляющую путь, на который указывает символическая ссылка. Результат может быть абсолютным или относительным именем пути; если он относительный, его можно преобразовать в абсолютное имя пути с помощью
os.path.join(os.path.dirname(path), result)
.Если путь является строковым объектом (прямо или косвенно через интерфейс
PathLike
), результатом также будет строковый объект, и вызов может вызвать ошибку UnicodeDecodeError. Если path является байтовым объектом (прямо или косвенно), результатом будет байтовый объект.Эта функция также может поддерживать paths relative to directory descriptors.
При попытке разрешить путь, который может содержать ссылки, используйте
realpath()
для правильной обработки рекурсии и различий платформ.Availability: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-like object на Unix.
Изменено в версии 3.8: Принимает path-like object и объект bytes в Windows.
Изменено в версии 3.8: Добавлена поддержка перекрестков каталогов, а также изменено возвращение пути подстановки (который обычно включает префикс
\\?\
) вместо необязательного поля «имя печати», которое возвращалось ранее.
-
os.
remove
(path, *, dir_fd=None)¶ Удалить (delete) файл path. Если path является каталогом, то выдается предупреждение
IsADirectoryError
. Для удаления каталогов используйтеrmdir()
. Если файл не существует, выдается сообщениеFileNotFoundError
.Эта функция может поддерживать paths relative to directory descriptors.
В Windows попытка удалить используемый файл вызывает исключение; в Unix запись каталога удаляется, но хранилище, выделенное для файла, не становится доступным до тех пор, пока исходный файл не перестанет использоваться.
Эта функция семантически идентична
unlink()
.Вызывает auditing event
os.remove
с аргументамиpath
,dir_fd
.Добавлено в версии 3.3: Аргумент dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
os.
removedirs
(name)¶ Рекурсивно удалять каталоги. Работает как
rmdir()
, за исключением того, что если листок каталога успешно удален,removedirs()
пытается последовательно удалить каждый родительский каталог, упомянутый в path, пока не будет выдана ошибка (которая игнорируется, поскольку обычно означает, что родительский каталог не пуст). Например,os.removedirs('foo/bar/baz')
сначала удалит каталог'foo/bar/baz'
, а затем удалит'foo/bar'
и'foo'
, если они пусты. Вызывает сообщениеOSError
, если листая каталог не удалось успешно удалить.Вызывает auditing event
os.remove
с аргументамиpath
,dir_fd
.Изменено в версии 3.6: Принимает path-like object.
-
os.
rename
(src, dst, *, src_dir_fd=None, dst_dir_fd=None)¶ Переименовать файл или каталог src в dst. Если dst существует, то в ряде случаев операция завершится неудачей с подклассом
OSError
:В Windows, если dst существует, всегда выдается сообщение
FileExistsError
.В Unix, если src - файл, а dst - каталог или наоборот, будет выдано сообщение
IsADirectoryError
илиNotADirectoryError
соответственно. Если оба файла являются каталогами, а dst пуст, то dst будет молча заменен. Если dst - непустой каталог, будет выдано предупреждениеOSError
. Если оба файла являются файлами, dst будет заменен молча, если у пользователя есть разрешение. Операция может завершиться неудачей в некоторых версиях Unix, если src и dst находятся в разных файловых системах. В случае успеха переименование будет атомарной операцией (это требование POSIX).Эта функция может поддерживать указание src_dir_fd и/или dst_dir_fd для поставки paths relative to directory descriptors.
Если вам нужна кроссплатформенная перезапись места назначения, используйте
replace()
.Вызывает auditing event
os.rename
с аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Добавлено в версии 3.3: Аргументы src_dir_fd и dst_dir_fd.
Изменено в версии 3.6: Принимает path-like object для src и dst.
-
os.
renames
(old, new)¶ Рекурсивная функция переименования каталогов или файлов. Работает как
rename()
, за исключением того, что сначала создаются все промежуточные каталоги, необходимые для того, чтобы новое имя было правильным. После переименования каталоги, соответствующие крайним правым сегментам пути старого имени, будут обрезаны с помощьюremovedirs()
.Примечание
Эта функция может не работать с новой структурой каталогов, если у вас отсутствуют разрешения, необходимые для удаления листа каталога или файла.
Вызывает auditing event
os.rename
с аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Изменено в версии 3.6: Принимает path-like object для старый и новый.
-
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 для поставки paths relative to directory descriptors.
Вызывает auditing event
os.rename
с аргументамиsrc
,dst
,src_dir_fd
,dst_dir_fd
.Добавлено в версии 3.3.
Изменено в версии 3.6: Принимает path-like object для src и dst.
-
os.
rmdir
(path, *, dir_fd=None)¶ Удалить (delete) каталог path. Если каталог не существует или не пуст, то выдается сообщение
FileNotFoundError
илиOSError
соответственно. Для удаления целых деревьев каталогов можно использоватьshutil.rmtree()
.Эта функция может поддерживать paths relative to directory descriptors.
Вызывает auditing event
os.rmdir
с аргументамиpath
,dir_fd
.Добавлено в версии 3.3: Параметр dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
os.
scandir
(path='.')¶ Возвращает итератор объектов
os.DirEntry
, соответствующих записям в каталоге, заданном path. Записи выдаются в произвольном порядке, специальные записи'.'
и'..'
не включаются. Если файл удаляется или добавляется в каталог после создания итератора, включение записи для этого файла не определено.Использование
scandir()
вместоlistdir()
может значительно повысить производительность кода, которому также необходима информация о типе файла или атрибутах файла, поскольку объектыos.DirEntry
предоставляют эту информацию, если операционная система предоставляет ее при сканировании каталога. Все методыos.DirEntry
могут выполнять системный вызов, ноis_dir()
иis_file()
обычно требуют системного вызова только для символических ссылок;os.DirEntry.stat()
всегда требует системного вызова на Unix, но только для символических ссылок на Windows.path может быть path-like object. Если path имеет тип
bytes
(прямо или косвенно через интерфейсPathLike
), то тип атрибутовname
иpath
каждогоos.DirEntry
будетbytes
; во всех остальных случаях они будут иметь типstr
.Эта функция также может поддерживать specifying a file descriptor; дескриптор файла должен ссылаться на каталог.
Вызывает auditing event
os.scandir
с аргументомpath
.Итератор
scandir()
поддерживает протокол context manager и имеет следующий метод:-
scandir.
close
()¶ Закрыть итератор и освободить приобретенные ресурсы.
Он вызывается автоматически, когда итератор исчерпан или собран в мусор, или когда во время итерации произошла ошибка. Однако рекомендуется вызывать его явно или использовать оператор
with
.Добавлено в версии 3.6.
Следующий пример показывает простое использование
scandir()
для отображения всех файлов (исключая каталоги) в заданном пути, которые не начинаются с'.'
. Вызовentry.is_file()
обычно не делает дополнительного системного вызова:with os.scandir(path) as it: for entry in it: if not entry.name.startswith('.') and entry.is_file(): print(entry.name)
Примечание
В системах на базе Unix программа
scandir()
использует системные функции opendir() и readdir(). В Windows используются функции Win32 FindFirstFileW и FindNextFileW.Добавлено в версии 3.5.
Добавлено в версии 3.6: Добавлена поддержка протокола context manager и метода
close()
. Если итераторscandir()
не исчерпан и не закрыт явно, в его деструкторе будет выдано сообщениеResourceWarning
.Функция принимает path-like object.
Изменено в версии 3.7: Добавлена поддержка file descriptors на Unix.
-
-
class
os.
DirEntry
¶ Объект, выдаваемый
scandir()
для раскрытия пути к файлу и других файловых атрибутов записи каталога.scandir()
предоставит как можно больше этой информации без выполнения дополнительных системных вызовов. Когда выполняется системный вызовstat()
илиlstat()
, объектos.DirEntry
будет кэшировать результат.Экземпляры
os.DirEntry
не предназначены для хранения в долгоживущих структурах данных; если вы знаете, что метаданные файла изменились или прошло много времени с момента вызоваscandir()
, вызовитеos.stat(entry.path)
для получения актуальной информации.Поскольку методы
os.DirEntry
могут выполнять вызовы операционной системы, они также могут вызыватьOSError
. Если вам нужен очень тонкий контроль над ошибками, вы можете перехватитьOSError
при вызове одного из методовos.DirEntry
и обработать его соответствующим образом.Чтобы быть непосредственно используемым в качестве path-like object,
os.DirEntry
реализует интерфейсPathLike
.Атрибуты и методы экземпляра
os.DirEntry
следующие:-
name
¶ Базовое имя файла записи, относительно аргумента
scandir()
path.Атрибут
name
будетbytes
, если аргументscandir()
path имеет типbytes
иstr
в противном случае. Используйтеfsdecode()
для декодирования байтовых имен файлов.
-
path
¶ Полное имя пути записи: эквивалентно
os.path.join(scandir_path, entry.name)
, где scandir_path - аргументscandir()
path. Путь является абсолютным, только если аргументscandir()
path был абсолютным. Если аргументscandir()
путь был file descriptor, то атрибутpath
будет таким же, как атрибутname
.Атрибут
path
будетbytes
, если аргументscandir()
path имеет типbytes
иstr
в противном случае. Используйтеfsdecode()
для декодирования байтовых имен файлов.
-
inode
()¶ Возвращает номер inode записи.
Результат кэшируется на объекте
os.DirEntry
. Для получения актуальной информации используйтеos.stat(entry.path, follow_symlinks=False).st_ino
.При первом, некэшированном вызове системный вызов требуется в Windows, но не в Unix.
-
is_dir
(*, follow_symlinks=True)¶ Возвращает
True
если эта запись является каталогом или символической ссылкой, указывающей на каталог; возвращаетFalse
если запись является или указывает на любой другой тип файла, или если он больше не существует.Если follow_symlinks равно
False
, возвращаетсяTrue
только если эта запись является каталогом (без следующих симлинков); возвращаетсяFalse
, если запись является любым другим видом файла или если он больше не существует.Результат кэшируется в объекте
os.DirEntry
, с отдельным кэшем для follow_symlinksTrue
иFalse
. Вызовитеos.stat()
вместе сstat.S_ISDIR()
для получения актуальной информации.При первом, некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, для несимвольных ссылок ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN
. Если запись является симлинком, то для следования по симлинку потребуется системный вызов, если только параметр follow_symlinks не равенFalse
.Этот метод может поднять
OSError
, напримерPermissionError
, ноFileNotFoundError
перехватывается и не поднимается.
-
is_file
(*, follow_symlinks=True)¶ Верните
True
, если эта запись является файлом или символической ссылкой, указывающей на файл; вернитеFalse
, если запись является или указывает на каталог или другую нефайловую запись, или если она больше не существует.Если follow_symlinks равно
False
, вернитеTrue
только если эта запись является файлом (без следующих симлинков); вернитеFalse
, если запись является каталогом или другой нефайловой записью, или если она больше не существует.Результат кэшируется на объекте
os.DirEntry
. Кэширование, выполняемые системные вызовы и возникающие исключения соответствуютis_dir()
.
-
is_symlink
()¶ Верните
True
, если эта запись является символической ссылкой (даже если она нарушена); вернитеFalse
, если запись указывает на каталог или файл любого типа, или если она больше не существует.Результат кэшируется на объекте
os.DirEntry
. Вызовитеos.path.islink()
для получения актуальной информации.При первом, некэшированном вызове в большинстве случаев системный вызов не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN
.Этот метод может поднять
OSError
, напримерPermissionError
, ноFileNotFoundError
перехватывается и не поднимается.
-
stat
(*, follow_symlinks=True)¶ Возвращает объект
stat_result
для данной записи. По умолчанию этот метод выполняет символические ссылки; для статирования символической ссылки добавьте аргументfollow_symlinks=False
.В Unix этот метод всегда требует системного вызова. В Windows он требует системного вызова, только если follow_symlinks имеет значение
True
и запись является точкой репарсинга (например, символической ссылкой или перекрестком каталогов).В Windows атрибуты
st_ino
,st_dev
иst_nlink
вstat_result
всегда установлены в ноль. Вызовитеos.stat()
, чтобы получить эти атрибуты.Результат кэшируется на объекте
os.DirEntry
, с отдельным кэшем для follow_symlinksTrue
иFalse
. Вызовитеos.stat()
для получения актуальной информации.
Обратите внимание, что между некоторыми атрибутами и методами
os.DirEntry
иpathlib.Path
существует хорошее соответствие. В частности, атрибутname
имеет то же значение, что и методыis_dir()
,is_file()
,is_symlink()
иstat()
.Добавлено в версии 3.5.
-
-
os.
stat
(path, *, dir_fd=None, follow_symlinks=True)¶ Получение статуса файла или дескриптора файла. Выполняет эквивалент системного вызова
stat()
по заданному пути. путь может быть указан как строка или байт - прямо или косвенно через интерфейсPathLike
- или как открытый дескриптор файла. Возвращает объектstat_result
.Эта функция обычно следует за симлинками; для статирования симлинка добавьте аргумент
follow_symlinks=False
, или используйтеlstat()
.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
В Windows передача
follow_symlinks=False
отключает следование за всеми точками разбора с суррогатом имени, что включает симлинки и перекрестки каталогов. Другие типы точек разбора, которые не похожи на ссылки или по которым операционная система не может следовать, будут открываться напрямую. При следовании по цепочке из нескольких ссылок, это может привести к возврату исходной ссылки вместо не-ссылки, которая препятствует полному обходу. Чтобы получить результаты stat для конечного пути в этом случае, используйте функциюos.path.realpath()
для разрешения имени пути, насколько это возможно, и вызовитеlstat()
для результата. Это не относится к висячим симлинкам или точкам пересечения, которые вызовут обычные исключения.Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Добавлено в версии 3.3: Добавлены аргументы dir_fd и follow_symlinks, указывающие дескриптор файла вместо пути.
Изменено в версии 3.6: Принимает path-like object.
Изменено в версии 3.8: В Windows теперь выполняются все точки разбора, которые могут быть разрешены операционной системой, а передача
follow_symlinks=False
отключает выполнение всех точек разбора суррогатов имен. Если операционная система достигает точки разбора, которую она не может выполнить, stat теперь возвращает информацию для исходного пути, как если бы было указаноfollow_symlinks=False
, вместо того, чтобы выдать ошибку.
-
class
os.
stat_result
¶ Объект, атрибуты которого примерно соответствуют членам структуры
stat
. Он используется для результатаos.stat()
,os.fstat()
иos.lstat()
.Атрибуты:
-
st_mode
¶ Режим файла: тип файла и биты режима файла (разрешения).
-
st_ino
¶ Зависит от платформы, но если ненулевой, то однозначно идентифицирует файл для заданного значения
st_dev
. Как правило:номер инода в Unix,
file index в Windows
-
st_dev
¶ Идентификатор устройства, на котором находится данный файл.
-
st_nlink
¶ Количество жестких ссылок.
-
st_uid
¶ Идентификатор пользователя владельца файла.
-
st_gid
¶ Групповой идентификатор владельца файла.
-
st_size
¶ Размер файла в байтах, если это обычный файл или символическая ссылка. Размер символической ссылки равен длине имени пути, которое она содержит, без завершающего нулевого байта.
Временные метки:
-
st_atime
¶ Время последнего доступа, выраженное в секундах.
-
st_mtime
¶ Время последнего изменения содержимого, выраженное в секундах.
-
st_ctime
¶ Зависит от платформы:
время последнего изменения метаданных на Unix,
время создания в Windows, выраженное в секундах.
-
st_atime_ns
¶ Время последнего доступа, выраженное в наносекундах как целое число.
-
st_mtime_ns
¶ Время последней модификации содержимого, выраженное в наносекундах как целое число.
-
st_ctime_ns
¶ Зависит от платформы:
время последнего изменения метаданных на Unix,
время создания в Windows, выраженное в наносекундах как целое число.
Примечание
Точное значение и разрешение атрибутов
st_atime
,st_mtime
иst_ctime
зависит от операционной системы и файловой системы. Например, в системах Windows, использующих файловые системы FAT или FAT32, атрибутst_mtime
имеет разрешение 2 секунды, аst_atime
- только 1 день. Подробности см. в документации к операционной системе.Аналогично, хотя
st_atime_ns
,st_mtime_ns
иst_ctime_ns
всегда выражаются в наносекундах, многие системы не обеспечивают наносекундную точность. В системах, обеспечивающих наносекундную точность, объект с плавающей точкой, используемый для храненияst_atime
,st_mtime
иst_ctime
, не может сохранить ее всю, и поэтому будет немного неточным. Если вам нужны точные временные метки, всегда используйтеst_atime_ns
,st_mtime_ns
иst_ctime_ns
.В некоторых системах Unix (например, Linux) также могут быть доступны следующие атрибуты:
-
st_blocks
¶ Количество 512-байтных блоков, выделенных для файла. Это может быть меньше, чем
st_size
/512, если файл имеет отверстия.
-
st_blksize
¶ «Предпочтительный» размер блока для эффективного ввода-вывода файловой системы. Запись в файл меньшими блоками может привести к неэффективному чтению-модификации-перезаписи.
-
st_rdev
¶ Тип устройства, если устройство inode.
-
st_flags
¶ Флаги, определяемые пользователем для файла.
В других системах Unix (например, FreeBSD) следующие атрибуты могут быть доступны (но могут быть заполнены, только если root попытается их использовать):
-
st_gen
¶ Номер поколения файла.
-
st_birthtime
¶ Время создания файла.
В Solaris и производных системах также могут быть доступны следующие атрибуты:
-
st_fstype
¶ Строка, уникально идентифицирующая тип файловой системы, содержащей файл.
В системах macOS также могут быть доступны следующие атрибуты:
-
st_rsize
¶ Реальный размер файла.
-
st_creator
¶ Создатель файла.
-
st_type
¶ Тип файла.
В системах Windows также доступны следующие атрибуты:
-
st_file_attributes
¶ Атрибуты файла Windows:
dwFileAttributes
член структурыBY_HANDLE_FILE_INFORMATION
, возвращаемойGetFileInformationByHandle()
. См. константыFILE_ATTRIBUTE_*
в модулеstat
.
-
st_reparse_tag
¶ Когда
st_file_attributes
имеет значениеFILE_ATTRIBUTE_REPARSE_POINT
, это поле содержит тег, идентифицирующий тип точки репарсинга. См. константыIO_REPARSE_TAG_*
в модулеstat
.
Стандартный модуль
stat
определяет функции и константы, которые полезны для извлечения информации из структурыstat
. (В Windows некоторые элементы заполнены фиктивными значениями).Для обратной совместимости экземпляр
stat_result
также доступен как кортеж из не менее 10 целых чисел, дающих наиболее важные (и переносимые) члены структуры : c:type:stat, в порядкеst_mode
,st_ino
,st_dev
,st_nlink
,st_uid
,st_gid
,st_size
,st_atime
,st_mtime
,st_ctime
. В некоторых реализациях в конце могут быть добавлены дополнительные элементы. Для совместимости со старыми версиями Python обращение кstat_result
как к кортежу всегда возвращает целые числа.Добавлено в версии 3.3: Добавлены члены
st_atime_ns
,st_mtime_ns
иst_ctime_ns
.Добавлено в версии 3.5: Добавлен член
st_file_attributes
в Windows.Изменено в версии 3.5: Windows теперь возвращает индекс файла в виде
st_ino
, когда он доступен.Добавлено в версии 3.7: Добавлен член
st_fstype
в Solaris/derivatives.Добавлено в версии 3.8: Добавлен член
st_reparse_tag
в Windows.Изменено в версии 3.8: В Windows член
st_mode
теперь идентифицирует специальные файлы какS_IFCHR
,S_IFIFO
илиS_IFBLK
в зависимости от ситуации.-
-
os.
statvfs
(path)¶ Выполнить системный вызов
statvfs()
на заданном пути. Возвращаемым значением является объект, атрибуты которого описывают файловую систему на заданном пути и соответствуют членам структурыstatvfs
, а именно:f_bsize
,f_frsize
,f_blocks
,f_bfree
,f_bavail
,f_files
,f_ffree
,f_favail
,f_flag
,f_namemax
,f_fsid
.Для битовых флагов атрибута
f_flag
определены две константы на уровне модуля: если установлено значениеST_RDONLY
, то файловая система монтируется только для чтения, а если установлено значениеST_NOSUID
, то семантика битов setuid/setgid отключена или не поддерживается.Для систем на базе GNU/glibc определены дополнительные константы на уровне модуля. Это
ST_NODEV
(запрет доступа к специальным файлам устройства),ST_NOEXEC
(запрет выполнения программы),ST_SYNCHRONOUS
(запись синхронизируется сразу),ST_MANDLOCK
(разрешить обязательную блокировку ФС),ST_WRITE
(запись на файл/директорию/симссылку),ST_APPEND
(файл только для добавления),ST_IMMUTABLE
(неизменяемый файл),ST_NOATIME
(не обновлять время доступа),ST_NODIRATIME
(не обновлять время доступа к каталогам),ST_RELATIME
(обновлять atime относительно mtime/ctime).Эта функция может поддерживать specifying a file descriptor.
Availability: Unix.
Изменено в версии 3.2: Были добавлены константы
ST_RDONLY
иST_NOSUID
.Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла.
Изменено в версии 3.4: Добавлены константы
ST_NODEV
,ST_NOEXEC
,ST_SYNCHRONOUS
,ST_MANDLOCK
,ST_WRITE
,ST_APPEND
,ST_IMMUTABLE
,ST_NOATIME
,ST_NODIRATIME
иST_RELATIME
.Изменено в версии 3.6: Принимает path-like object.
Добавлено в версии 3.7: Добавлено
f_fsid
.
-
os.
supports_dir_fd
¶ Объект
set
, указывающий, какие функции в модулеos
принимают открытый дескриптор файла для своего параметра dir_fd. Различные платформы предоставляют различные возможности, и базовая функциональность, которую Python использует для реализации параметра dir_fd, доступна не на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать dir_fd, всегда позволяют указывать параметр, но будут выбрасывать исключение, если функциональность используется, когда она недоступна на локальном уровне. (УказаниеNone
для dir_fd всегда поддерживается на всех платформах).Чтобы проверить, принимает ли определенная функция открытый дескриптор файла для своего параметра dir_fd, используйте оператор
in
наsupports_dir_fd
. В качестве примера, это выражение оценивается вTrue
, еслиos.stat()
принимает открытые дескрипторы файлов для dir_fd на локальной платформе:os.stat in os.supports_dir_fd
В настоящее время параметры dir_fd работают только на платформах Unix; ни один из них не работает на Windows.
Добавлено в версии 3.3.
-
os.
supports_effective_ids
¶ Объект
set
, указывающий, разрешает лиos.access()
на локальной платформе указыватьTrue
для своего параметра effective_ids. (УказаниеFalse
для effective_ids всегда поддерживается на всех платформах). Если локальная платформа поддерживает это, коллекция будет содержатьos.access()
; в противном случае она будет пустой.Это выражение оценивается в
True
, еслиos.access()
поддерживаетeffective_ids=True
на локальной платформе:os.access in os.supports_effective_ids
В настоящее время effective_ids поддерживается только на платформах Unix; на Windows он не работает.
Добавлено в версии 3.3.
-
os.
supports_fd
¶ Объект
set
, указывающий, какие функции в модулеos
позволяют указывать свой параметр path как открытый дескриптор файла на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую использует Python для принятия открытых файловых дескрипторов в качестве аргументов path, доступна не на всех платформах, поддерживаемых Python.Чтобы определить, разрешает ли конкретная функция указывать открытый дескриптор файла для своего параметра path, используйте оператор
in
наsupports_fd
. В качестве примера, это выражение оценивается вTrue
, еслиos.chdir()
принимает открытые дескрипторы файлов для path на вашей локальной платформе:os.chdir in os.supports_fd
Добавлено в версии 3.3.
-
os.
supports_follow_symlinks
¶ Объект
set
, указывающий, какие функции в модулеos
принимаютFalse
для своего параметра follow_symlinks на локальной платформе. Разные платформы предоставляют разные возможности, и базовая функциональность, которую Python использует для реализации follow_symlinks, доступна не на всех платформах, поддерживаемых Python. Для единообразия функции, которые могут поддерживать follow_symlinks, всегда разрешают указывать параметр, но будут выбрасывать исключение, если функциональность используется, когда она недоступна локально. (УказаниеTrue
для follow_symlinks всегда поддерживается на всех платформах).Чтобы проверить, принимает ли конкретная функция
False
для своего параметра follow_symlinks, используйте операторin
наsupports_follow_symlinks
. В качестве примера, это выражение оценивается вTrue
, если вы можете указатьfollow_symlinks=False
при вызовеos.stat()
на локальной платформе:os.stat in os.supports_follow_symlinks
Добавлено в версии 3.3.
-
os.
symlink
(src, dst, target_is_directory=False, *, dir_fd=None)¶ Создайте символическую ссылку, указывающую на src с именем dst.
В Windows симлинк представляет собой либо файл, либо каталог и не изменяет цель динамически. Если цель присутствует, тип симлинка будет создан в соответствии с ней. В противном случае симссылка будет создана как каталог, если target_is_directory равно
True
, или как файловая симссылка (по умолчанию). На платформах, отличных от Windows, target_is_directory игнорируется.Эта функция может поддерживать paths relative to directory descriptors.
Примечание
В новых версиях Windows 10 непривилегированные учетные записи могут создавать симлинки, если включен режим разработчика. Если режим разработчика недоступен/не включен, требуется привилегия SeCreateSymbolicLinkPrivilege или процесс должен быть запущен от имени администратора.
OSError
возникает, если функция вызывается непривилегированным пользователем.Вызывает auditing event
os.symlink
с аргументамиsrc
,dst
,dir_fd
.Availability: Unix, Windows.
Изменено в версии 3.2: Добавлена поддержка символических ссылок Windows 6.0 (Vista).
Добавлено в версии 3.3: Добавлен аргумент dir_fd, и теперь разрешено target_is_directory на платформах, отличных от Windows.
Изменено в версии 3.6: Принимает path-like object для src и dst.
Изменено в версии 3.8: Добавлена поддержка неэлементированных симлинков в Windows с режимом разработчика.
-
os.
sync
()¶ Принудительная запись всего на диск.
Availability: Unix.
Добавлено в версии 3.3.
-
os.
truncate
(path, length)¶ Усечь файл, соответствующий path, так, чтобы его размер был не более length байт.
Эта функция может поддерживать specifying a file descriptor.
Вызывает auditing event
os.truncate
с аргументамиpath
,length
.Availability: Unix, Windows.
Добавлено в версии 3.3.
Изменено в версии 3.5: Добавлена поддержка Windows
Изменено в версии 3.6: Принимает path-like object.
-
os.
unlink
(path, *, dir_fd=None)¶ Удаление (delete) файла path. Эта функция семантически идентична
remove()
; имяunlink
- это ее традиционное Unix-имя. Дополнительную информацию см. в документации дляremove()
.Вызывает auditing event
os.remove
с аргументамиpath
,dir_fd
.Добавлено в версии 3.3: Параметр dir_fd.
Изменено в версии 3.6: Принимает path-like object.
-
os.
utime
(path, times=None, *, [ns, ]dir_fd=None, follow_symlinks=True)¶ Установить время доступа и время модификации файла, указанного path.
utime()
принимает два необязательных параметра, times и ns. Они определяют время, установленное на пути, и используются следующим образом:Если указано ns, то это должен быть 2 кортеж вида
(atime_ns, mtime_ns)
, где каждый член - int, выражающий наносекунды.Если times не
None
, то это должен быть кортеж вида(atime, mtime)
, где каждый член - int или float, выражающий секунды.Если times равно
None
и ns не указано, это эквивалентно указаниюns=(atime_ns, mtime_ns)
, где оба времени - текущее время.
Ошибкой является указание кортежей как для times, так и для ns.
Обратите внимание, что точное время, заданное здесь, может быть не возвращено последующим вызовом
stat()
, в зависимости от разрешения, с которым ваша операционная система записывает время доступа и модификации; см.stat()
. Лучший способ сохранить точное время - использовать поля st_atime_ns и st_mtime_ns из объекта результатаos.stat()
с параметром ns в utime.Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.
Вызывает auditing event
os.utime
с аргументамиpath
,times
,ns
,dir_fd
.Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также параметров dir_fd, follow_symlinks и ns.
Изменено в версии 3.6: Принимает path-like object.
-
os.
walk
(top, topdown=True, onerror=None, followlinks=False)¶ Генерирует имена файлов в дереве каталогов, проходя по дереву сверху вниз или снизу вверх. Для каждого каталога в дереве, укорененного в каталоге top (включая сам каталог top), выдает 3-кортеж
(dirpath, dirnames, filenames)
.dirpath - строка, путь к каталогу. dirnames - список имен подкаталогов в dirpath (исключая
'.'
и'..'
). filenames - это список имен файлов, не входящих в каталог dirpath. Обратите внимание, что имена в списках не содержат компонентов пути. Чтобы получить полный путь (который начинается с top) к файлу или каталогу в dirpath, выполнитеos.path.join(dirpath, name)
. Сортируются ли списки или нет, зависит от файловой системы. Если файл удален из каталога dirpath или добавлен в него во время генерации списков, будет ли включено имя этого файла, не определено.Если необязательный аргумент topdown равен
True
или не указан, то тройка для каталога генерируется перед тройками для любого из его подкаталогов (каталоги генерируются сверху вниз). Если topdown равноFalse
, то тройка для каталога генерируется после троек для всех его подкаталогов (каталоги генерируются снизу вверх). Независимо от значения topdown, список подкаталогов извлекается до генерации кортежей для каталога и его подкаталогов.Когда topdown равен
True
, вызывающая сторона может изменить список dirnames на месте (возможно, используяdel
или присваивание фрагментов), иwalk()
будет выполнять поиск только в тех подкаталогах, имена которых остались в dirnames; это можно использовать для сокращения поиска, наложения определенного порядка посещения или даже для информированияwalk()
о каталогах, которые вызывающая сторона создает или переименовывает, прежде чем она возобновитwalk()
снова. Изменение dirnames, когда topdown установленFalse
, не влияет на поведение прогулки, поскольку в режиме bottom-up каталоги в dirnames создаются до того, как будет создан сам dirpath.По умолчанию ошибки от вызова
scandir()
игнорируются. Если указан необязательный аргумент onerror, то это должна быть функция; она будет вызвана с одним аргументом, экземпляромOSError
. Она может сообщить об ошибке, чтобы продолжить выполнение, или поднять исключение, чтобы прервать выполнение. Обратите внимание, что имя файла доступно как атрибутfilename
объекта исключения.По умолчанию
walk()
не будет спускаться по символическим ссылкам, которые разрешаются в каталоги. Установите followlinks вTrue
для посещения каталогов, на которые указывают симлинки, в системах, которые их поддерживают.Примечание
Помните, что установка followlinks в значение
True
может привести к бесконечной рекурсии, если ссылка указывает на родительский каталог самой себя.walk()
не отслеживает уже посещенные каталоги.Примечание
Если вы передаете относительное имя пути, не меняйте текущий рабочий каталог между вызовами
walk()
.walk()
никогда не меняет текущий каталог и предполагает, что его вызывающая сторона тоже этого не делает.Этот пример показывает количество байт, занятых недиректорными файлами в каждом каталоге под начальным каталогом, за исключением того, что он не просматривает ни один подкаталог CVS:
import os from os.path import join, getsize for root, dirs, files in os.walk('python/Lib/email'): print(root, "consumes", end=" ") print(sum(getsize(join(root, name)) for name in files), end=" ") print("bytes in", len(files), "non-directory files") if 'CVS' in dirs: dirs.remove('CVS') # don't visit CVS directories
В следующем примере (простая реализация
shutil.rmtree()
) необходимо пройтись по дереву снизу вверх,rmdir()
не позволяет удалить каталог до того, как каталог станет пустым:# Delete everything reachable from the directory named in "top", # assuming there are no symbolic links. # CAUTION: This is dangerous! For example, if top == '/', it # could delete all your disk files. import os for root, dirs, files in os.walk(top, topdown=False): for name in files: os.remove(os.path.join(root, name)) for name in dirs: os.rmdir(os.path.join(root, name))
Вызывает auditing event
os.walk
с аргументамиtop
,topdown
,onerror
,followlinks
.Изменено в версии 3.5: Эта функция теперь вызывает
os.scandir()
вместоos.listdir()
, что делает ее быстрее за счет уменьшения количества вызововos.stat()
.Изменено в версии 3.6: Принимает path-like object.
-
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.Эта функция всегда поддерживает paths relative to directory descriptors и not following symlinks. Однако обратите внимание, что, в отличие от других функций, значение по умолчанию
fwalk()
для follow_symlinks равно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)
Поднимает auditing event
os.fwalk
с аргументамиtop
,topdown
,onerror
,follow_symlinks
,dir_fd
.Availability: Unix.
Добавлено в версии 3.3.
Изменено в версии 3.6: Принимает path-like object.
Изменено в версии 3.7: Добавлена поддержка путей
bytes
.
-
os.
memfd_create
(name[, flags=os.MFD_CLOEXEC])¶ Создать анонимный файл и вернуть файловый дескриптор, который на него ссылается. flags должен быть одной из констант
os.MFD_*
, доступных в системе (или их побитовой ORed комбинацией). По умолчанию новый дескриптор файла имеет значение non-inheritable.Имя, указанное в name, используется в качестве имени файла и будет отображено как цель соответствующей символической ссылки в каталоге
/proc/self/fd/
. Отображаемое имя всегда имеет префиксmemfd:
и служит только для отладочных целей. Имена не влияют на поведение дескриптора файла, и поэтому несколько файлов могут иметь одно и то же имя без каких-либо побочных эффектов.Availability: Linux 3.17 или новее с glibc 2.27 или новее.
Добавлено в версии 3.8.
-
os.
MFD_CLOEXEC
¶ -
os.
MFD_ALLOW_SEALING
¶ -
os.
MFD_HUGETLB
¶ -
os.
MFD_HUGE_SHIFT
¶ -
os.
MFD_HUGE_MASK
¶ -
os.
MFD_HUGE_64KB
¶ -
os.
MFD_HUGE_512KB
¶ -
os.
MFD_HUGE_1MB
¶ -
os.
MFD_HUGE_2MB
¶ -
os.
MFD_HUGE_8MB
¶ -
os.
MFD_HUGE_16MB
¶ -
os.
MFD_HUGE_32MB
¶ -
os.
MFD_HUGE_256MB
¶ -
os.
MFD_HUGE_512MB
¶ -
os.
MFD_HUGE_1GB
¶ -
os.
MFD_HUGE_2GB
¶ -
os.
MFD_HUGE_16GB
¶ Эти флаги могут быть переданы в
memfd_create()
.Availability: Linux 3.17 или новее с glibc 2.27 или новее. Флаги
MFD_HUGE*
доступны только начиная с Linux 4.14.Добавлено в версии 3.8.
-
os.
eventfd
(initval[, flags=os.EFD_CLOEXEC])¶ Создает и возвращает дескриптор файла событий. Дескрипторы файлов поддерживают сырые
read()
иwrite()
с размером буфера 8,select()
,poll()
и подобные. Более подробную информацию смотрите на странице man eventfd(2). По умолчанию новым дескриптором файла является non-inheritable.initval - это начальное значение счетчика событий. Начальное значение должно быть 32-битным беззнаковым целым числом. Обратите внимание, что начальное значение ограничено 32-битным беззнаковым числом int, хотя счетчик событий является беззнаковым 64-битным целым числом с максимальным значением 264-2.
флаги могут быть построены из
EFD_CLOEXEC
,EFD_NONBLOCK
иEFD_SEMAPHORE
.Если указано
EFD_SEMAPHORE
и счетчик событий ненулевой,eventfd_read()
возвращает 1 и уменьшает счетчик на единицу.Если
EFD_SEMAPHORE
не указано и счетчик событий ненулевой,eventfd_read()
возвращает текущее значение счетчика событий и обнуляет счетчик.Если счетчик событий равен нулю и
EFD_NONBLOCK
не указан,eventfd_read()
блокирует.eventfd_write()
увеличивает счетчик событий. Запись блокируется, если операция записи увеличит счетчик до значения, превышающего 264-2.Пример:
import os # semaphore with start value '1' fd = os.eventfd(1, os.EFD_SEMAPHORE | os.EFC_CLOEXEC) try: # acquire semaphore v = os.eventfd_read(fd) try: do_work() finally: # release semaphore os.eventfd_write(fd, v) finally: os.close(fd)
Availability: Linux 2.6.27 или новее с glibc 2.8 или новее.
Добавлено в версии 3.10.
-
os.
eventfd_read
(fd)¶ Считывает значение из дескриптора файла
eventfd()
и возвращает 64-битное беззнаковое значение int. Функция не проверяет, что fd являетсяeventfd()
.Availability: См.
eventfd()
.Добавлено в версии 3.10.
-
os.
eventfd_write
(fd, value)¶ Добавить значение в дескриптор файла
eventfd()
. Значение должно быть 64-битным беззнаковым значением int. Функция не проверяет, что fd являетсяeventfd()
.Availability: См.
eventfd()
.Добавлено в версии 3.10.
-
os.
EFD_CLOEXEC
¶ Установите флаг close-on-exec для нового файлового дескриптора
eventfd()
.Availability: См.
eventfd()
.Добавлено в версии 3.10.
-
os.
EFD_NONBLOCK
¶ Установите флаг состояния
O_NONBLOCK
для нового файлового дескриптораeventfd()
.Availability: См.
eventfd()
.Добавлено в версии 3.10.
-
os.
EFD_SEMAPHORE
¶ Обеспечивает семафороподобную семантику для чтения из дескриптора файла
eventfd()
. При чтении внутренний счетчик уменьшается на единицу.Availability: Linux 2.6.30 или новее с glibc 2.8 или новее.
Добавлено в версии 3.10.
Расширенные атрибуты Linux¶
Добавлено в версии 3.3.
Все эти функции доступны только в Linux.
-
os.
getxattr
(path, attribute, *, follow_symlinks=True)¶ Возвращает значение расширенного атрибута файловой системы attribute для path. attribute может быть байтом или строкой (прямо или косвенно через интерфейс
PathLike
). Если это str, то он кодируется кодировкой файловой системы.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
Вызывает auditing event
os.getxattr
с аргументамиpath
,attribute
.Изменено в версии 3.6: Принимает path-like object для пути и атрибута.
-
os.
listxattr
(path=None, *, follow_symlinks=True)¶ Возвращает список расширенных атрибутов файловой системы на path. Атрибуты в списке представлены в виде строк, декодированных с помощью кодировки файловой системы. Если path - это
None
,listxattr()
будет проверен текущий каталог.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
Вызывает auditing event
os.listxattr
с аргументомpath
.Изменено в версии 3.6: Принимает path-like object.
-
os.
removexattr
(path, attribute, *, follow_symlinks=True)¶ Удаляет расширенный атрибут файловой системы attribute из path. attribute должен быть байтом или строкой (прямо или косвенно через интерфейс
PathLike
). Если это строка, то она кодируется с помощью filesystem encoding and error handler.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
Вызывает auditing event
os.removexattr
с аргументамиpath
,attribute
.Изменено в версии 3.6: Принимает path-like object для пути и атрибута.
-
os.
setxattr
(path, attribute, value, flags=0, *, follow_symlinks=True)¶ Установите расширенный атрибут файловой системы attribute на path в value. attribute должен быть байтом или строкой без встроенных NUL (прямо или косвенно через интерфейс
PathLike
). Если это str, то он кодируется с помощью filesystem encoding and error handler. флаги могут бытьXATTR_REPLACE
илиXATTR_CREATE
. Если заданоXATTR_REPLACE
, а атрибут не существует, то будет выдано сообщениеENODATA
. Если заданоXATTR_CREATE
и атрибут уже существует, то атрибут не будет создан и будет выданоEEXISTS
.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
Примечание
Ошибка в версиях ядра Linux менее 2.6.39 приводила к тому, что аргумент flags игнорировался на некоторых файловых системах.
Вызывает auditing event
os.setxattr
с аргументамиpath
,attribute
,value
,flags
.Изменено в версии 3.6: Принимает path-like object для пути и атрибута.
-
os.
XATTR_SIZE_MAX
¶ Максимальный размер, который может иметь значение расширенного атрибута. В настоящее время в Linux это 64 КиБ.
-
os.
XATTR_CREATE
¶ Это возможное значение для аргумента flags в
setxattr()
. Оно указывает на то, что операция должна создать атрибут.
-
os.
XATTR_REPLACE
¶ Это возможное значение для аргумента flags в
setxattr()
. Оно указывает на то, что операция должна заменить существующий атрибут.
Управление процессами¶
Эти функции можно использовать для создания и управления процессами.
Различные функции exec*
принимают список аргументов для новой программы, загружаемой в процесс. В каждом случае первый из этих аргументов передается новой программе как ее собственное имя, а не как аргумент, который пользователь мог ввести в командной строке. Для программиста на языке Си это argv[0]
, передаваемый программе main()
. Например, os.execv('/bin/echo', ['foo', 'bar'])
выведет на стандартный вывод только bar
; foo
, похоже, будет проигнорирован.
-
os.
abort
()¶ Генерирует сигнал
SIGABRT
для текущего процесса. На Unix по умолчанию генерируется дамп ядра; на Windows процесс немедленно возвращает код выхода3
. Имейте в виду, что вызов этой функции не вызовет обработчик сигналов Python, зарегистрированный дляSIGABRT
сsignal.signal()
.
-
os.
add_dll_directory
(path)¶ Добавьте путь к пути поиска DLL.
Этот путь поиска используется при разрешении зависимостей для импортированных модулей расширения (сам модуль разрешается через
sys.path
), а такжеctypes
.Удалите каталог, вызвав close() на возвращаемом объекте или используя его в операторе
with
.Более подробную информацию о том, как загружаются библиотеки DLL, см. в Microsoft documentation.
Вызывает auditing event
os.add_dll_directory
с аргументомpath
.Availability: Windows.
Добавлено в версии 3.8: Предыдущие версии CPython разрешали DLL, используя поведение по умолчанию для текущего процесса. Это приводило к несоответствиям, например, поиск
PATH
или текущего рабочего каталога выполнялся лишь иногда, а функции ОС, такие какAddDllDirectory
, не имели эффекта.В версии 3.8 два основных способа загрузки библиотек DLL теперь явно переопределяют поведение всего процесса для обеспечения согласованности. Информацию об обновлении библиотек см. в porting notes.
-
os.
execl
(path, arg0, arg1, ...)¶ -
os.
execle
(path, arg0, arg1, ..., env)¶ -
os.
execlp
(file, arg0, arg1, ...)¶ -
os.
execlpe
(file, arg0, arg1, ..., env)¶ -
os.
execv
(path, args)¶ -
os.
execve
(path, args, env)¶ -
os.
execvp
(file, args)¶ -
os.
execvpe
(file, args, env)¶ Все эти функции выполняют новую программу, заменяя текущий процесс; они не возвращаются. В Unix новый исполняемый файл загружается в текущий процесс и будет иметь тот же идентификатор процесса, что и вызывающая программа. Об ошибках будет сообщено как об исключениях
OSError
.Текущий процесс заменяется немедленно. Открытые файловые объекты и дескрипторы не промываются, поэтому если в этих открытых файлах могут быть буферизованные данные, их следует промыть с помощью
sys.stdout.flush()
илиos.fsync()
перед вызовом функцииexec*
.Варианты «l» и «v» функций
exec*
отличаются тем, как передаются аргументы командной строки. С вариантами «l», пожалуй, проще всего работать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функцийexecl*()
. Варианты «v» хороши, когда количество параметров переменное, при этом аргументы передаются в виде списка или кортежа как параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не является обязательным условием.Варианты, включающие букву «p» в конце (
execlp()
,execlpe()
,execvp()
иexecvpe()
), будут использовать переменную окруженияPATH
для нахождения файла программы. При замене окружения (с помощью одного из вариантовexec*e
, рассмотренных в следующем параграфе) новое окружение используется в качестве источника переменнойPATH
. Другие варианты,execl()
,execle()
,execv()
иexecve()
, не будут использовать переменнуюPATH
для поиска исполняемого файла; path должен содержать соответствующий абсолютный или относительный путь.Для
execle()
,execlpe()
,execve()
иexecvpe()
(обратите внимание, что все они заканчиваются на «e») параметр env должен быть отображением, которое используется для определения переменных среды нового процесса (они используются вместо среды текущего процесса); функцииexecl()
,execlp()
,execv()
иexecvp()
заставляют новый процесс наследовать среду текущего процесса.Для
execve()
на некоторых платформах path также может быть указан как дескриптор открытого файла. Эта функциональность может не поддерживаться на вашей платформе; вы можете проверить, доступна ли она, используяos.supports_fd
. Если она недоступна, ее использование вызовет ошибкуNotImplementedError
.Вызывает auditing event
os.exec
с аргументамиpath
,args
,env
.Availability: Unix, Windows.
Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла для
execve()
.Изменено в версии 3.6: Принимает path-like object.
-
os.
_exit
(n)¶ Завершение процесса со статусом n, без вызова обработчиков очистки, промывки буферов stdio и т.д.
Следующие коды выхода определены и могут использоваться с _exit()
, хотя они не обязательны. Они обычно используются для системных программ, написанных на Python, таких как программа доставки внешних команд почтового сервера.
Примечание
Некоторые из них могут быть доступны не на всех платформах Unix, поскольку существуют некоторые различия. Эти константы определены там, где они определены базовой платформой.
-
os.
EX_OK
¶ Код выхода, означающий, что ошибки не произошло.
Availability: Unix.
-
os.
EX_USAGE
¶ Код выхода, означающий, что команда была использована неправильно, например, когда указано неверное количество аргументов.
Availability: Unix.
-
os.
EX_DATAERR
¶ Код выхода, означающий, что входные данные были неверными.
Availability: Unix.
-
os.
EX_NOINPUT
¶ Код выхода, означающий, что входной файл не существует или не доступен для чтения.
Availability: Unix.
-
os.
EX_NOUSER
¶ Код выхода, означающий, что указанный пользователь не существует.
Availability: Unix.
-
os.
EX_NOHOST
¶ Код выхода, означающий, что указанный хост не существует.
Availability: Unix.
-
os.
EX_UNAVAILABLE
¶ Код выхода, означающий, что необходимая услуга недоступна.
Availability: Unix.
-
os.
EX_SOFTWARE
¶ Код выхода, означающий, что была обнаружена внутренняя ошибка программного обеспечения.
Availability: Unix.
-
os.
EX_OSERR
¶ Код выхода, означающий, что была обнаружена ошибка операционной системы, например, невозможность форка или создания трубы.
Availability: Unix.
-
os.
EX_OSFILE
¶ Код выхода, означающий, что какой-то системный файл не существует, не может быть открыт или произошла какая-то другая ошибка.
Availability: Unix.
-
os.
EX_CANTCREAT
¶ Код выхода, означающий, что указанный пользователем выходной файл не удалось создать.
Availability: Unix.
-
os.
EX_IOERR
¶ Код выхода, означающий, что при выполнении ввода-вывода некоторого файла произошла ошибка.
Availability: Unix.
-
os.
EX_TEMPFAIL
¶ Код выхода, означающий, что произошел временный сбой. Это указывает на то, что на самом деле может не быть ошибкой, например, сетевое соединение, которое не удалось установить во время операции, допускающей повторную попытку.
Availability: Unix.
-
os.
EX_PROTOCOL
¶ Код выхода, означающий, что обмен протоколом был незаконным, недействительным или непонятным.
Availability: Unix.
-
os.
EX_NOPERM
¶ Код выхода, означающий, что для выполнения операции не хватило разрешений (но не предназначен для проблем с файловой системой).
Availability: Unix.
-
os.
EX_CONFIG
¶ Код выхода, означающий, что произошла какая-то ошибка конфигурации.
Availability: Unix.
-
os.
EX_NOTFOUND
¶ Код выхода, означающий что-то вроде «запись не найдена».
Availability: Unix.
-
os.
fork
()¶ Форк дочернего процесса. Возвращает
0
в дочернем процессе и идентификатор дочернего процесса в родительском. При возникновении ошибки выдаетсяOSError
.Обратите внимание, что некоторые платформы, включая FreeBSD <= 6.3 и Cygwin, имеют известные проблемы при использовании
fork()
из потока.Вызывает auditing event
os.fork
без аргументов.Изменено в версии 3.8: Вызов
fork()
в подынтерпретаторе больше не поддерживается (вызываетсяRuntimeError
).Предупреждение
См.
ssl
для приложений, использующих модуль SSL с помощью fork().Availability: Unix.
-
os.
forkpty
()¶ Форк дочернего процесса, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару
(pid, fd)
, где pid -0
в дочернем процессе, id нового дочернего процесса в родительском, а fd - дескриптор файла ведущего конца псевдотерминала. Для более переносимого подхода используйте модульpty
. При возникновении ошибки выдается сообщениеOSError
.Вызывает auditing event
os.forkpty
без аргументов.Изменено в версии 3.8: Вызов
forkpty()
в подынтерпретаторе больше не поддерживается (вызываетсяRuntimeError
).Availability: некоторые разновидности Unix.
-
os.
kill
(pid, sig)¶ Послать сигнал sig процессу pid. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле
signal
.Окна: Сигналы
signal.CTRL_C_EVENT
иsignal.CTRL_BREAK_EVENT
- это специальные сигналы, которые могут быть посланы только консольным процессам, имеющим общее консольное окно, например, некоторым подпроцессам. Любое другое значение для sig приведет к безусловному завершению процесса с помощью API TerminateProcess, а код выхода будет установлен в sig. Версияkill()
для Windows дополнительно принимает хэндлы процессов, которые будут убиты.См. также
signal.pthread_kill()
.Вызывает auditing event
os.kill
с аргументамиpid
,sig
.Добавлено в версии 3.2: Поддержка Windows.
-
os.
killpg
(pgid, sig)¶ Отправьте сигнал sig группе процессов pgid.
Вызывает auditing event
os.killpg
с аргументамиpgid
,sig
.Availability: Unix.
-
os.
nice
(increment)¶ Добавить инкремент к «приятности» процесса. Верните новое значение «приятности».
Availability: Unix.
-
os.
pidfd_open
(pid, flags=0)¶ Возвращает дескриптор файла, ссылающийся на процесс pid. Этот дескриптор можно использовать для управления процессом без гонок и сигналов. Аргумент flags предусмотрен для будущих расширений; в настоящее время значения флагов не определены.
Более подробную информацию см. на странице руководства pidfd_open(2).
Availability: Linux 5.3+
Добавлено в версии 3.9.
-
os.
plock
(op)¶ Зафиксировать сегменты программы в памяти. Значение op (определено в
<sys/lock.h>
) определяет, какие сегменты будут заблокированы.Availability: Unix.
-
os.
popen
(cmd, mode='r', buffering=- 1)¶ Открыть трубу к или от команды cmd. Возвращаемое значение - открытый файловый объект, подключенный к трубе, который может быть прочитан или записан в зависимости от того, имеет ли mode значение
'r'
(по умолчанию) или'w'
. Аргумент buffering имеет то же значение, что и соответствующий аргумент встроенной функцииopen()
. Возвращаемый файловый объект читает или записывает текстовые строки, а не байты.Метод
close
возвращаетNone
, если подпроцесс завершился успешно, или код возврата подпроцесса, если произошла ошибка. В POSIX системах, если код возврата положительный, он представляет собой значение возврата процесса, сдвинутое влево на один байт. Если код возврата отрицательный, то процесс был завершен сигналом, заданным отрицательным значением кода возврата. (Например, значение возврата может быть- signal.SIGKILL
, если подпроцесс был убит). В системах Windows возвращаемое значение содержит подписанный целочисленный код возврата дочернего процесса.В Unix,
waitstatus_to_exitcode()
можно использовать для преобразования результата методаclose
(статус выхода) в код выхода, если он неNone
. В Windows результатом методаclose
является непосредственно код выхода (илиNone
).Это реализовано с помощью
subprocess.Popen
; более мощные способы управления и взаимодействия с подпроцессами см. в документации к этому классу.
-
os.
posix_spawn
(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶ Обертывает API библиотеки
posix_spawn()
C для использования из Python.Большинство пользователей должны использовать
subprocess.run()
вместоposix_spawn()
.Только позиционные аргументы path, args и env аналогичны
execve()
.Параметр path - это путь к исполняемому файлу. Параметр path должен содержать каталог. Используйте
posix_spawnp()
для передачи исполняемого файла без каталога.Аргумент file_actions может быть последовательностью кортежей, описывающих действия над определенными дескрипторами файлов в дочернем процессе между шагами
fork()
иexec()
реализации библиотеки C. Первый элемент в каждом кортеже должен быть одним из трех индикаторов типов, перечисленных ниже и описывающих остальные элементы кортежа:-
os.
POSIX_SPAWN_OPEN
¶ (
os.POSIX_SPAWN_OPEN
, fd, path, flags, mode)Выполняет
os.dup2(os.open(path, flags, mode), fd)
.
-
os.
POSIX_SPAWN_CLOSE
¶ (
os.POSIX_SPAWN_CLOSE
, fd)Выполняет
os.close(fd)
.
-
os.
POSIX_SPAWN_DUP2
¶ (
os.POSIX_SPAWN_DUP2
, fd, new_fd)Выполняет
os.dup2(fd, new_fd)
.
Эти кортежи соответствуют вызовам API библиотеки C
posix_spawn_file_actions_addopen()
,posix_spawn_file_actions_addclose()
иposix_spawn_file_actions_adddup2()
, используемым для подготовки к самому вызовуposix_spawn()
.Аргумент setpgroup устанавливает группу процессов дочернего процесса в указанное значение. Если указанное значение равно 0, то ID группы процессов дочернего процесса будет таким же, как и ID его процесса. Если значение setpgroup не задано, то дочерний процесс унаследует идентификатор группы процессов родителя. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETPGROUP
.Если аргумент resetids равен
True
, то эффективные UID и GID дочернего процесса будут сброшены на реальные UID и GID родительского процесса. Если аргумент равенFalse
, то дочерний процесс сохранит эффективные UID и GID родительского. В любом случае, если для исполняемого файла включены биты разрешения set-user-ID и set-group-ID, то их действие отменяет установку эффективных UID и GID. Этот аргумент соответствует флагу библиотеки CPOSIX_SPAWN_RESETIDS
.Если аргумент setsid равен
True
, то будет создан новый идентификатор сессии для posix_spawn. Для setsid требуется флагPOSIX_SPAWN_SETSID
илиPOSIX_SPAWN_SETSID_NP
. В противном случае возникает ошибкаNotImplementedError
.Аргумент setsigmask устанавливает маску сигнала на указанный набор сигналов. Если параметр не используется, то дочерняя программа наследует сигнальную маску родительской. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETSIGMASK
.Аргумент sigdef сбрасывает диспозицию всех сигналов в указанном наборе. Этот аргумент соответствует флагу библиотеки C
POSIX_SPAWN_SETSIGDEF
.Аргумент scheduler должен быть кортежем, содержащим (необязательную) политику планировщика и экземпляр
sched_param
с параметрами планировщика. ЗначениеNone
вместо политики планировщика означает, что она не предоставляется. Этот аргумент является комбинацией флагов библиотеки СиPOSIX_SPAWN_SETSCHEDPARAM
иPOSIX_SPAWN_SETSCHEDULER
.Вызывает auditing event
os.posix_spawn
с аргументамиpath
,argv
,env
.Добавлено в версии 3.8.
Availability: Unix.
-
-
os.
posix_spawnp
(path, argv, env, *, file_actions=None, setpgroup=None, resetids=False, setsid=False, setsigmask=(), setsigdef=(), scheduler=None)¶ Обертывает API библиотеки
posix_spawnp()
C для использования из Python.Аналогично
posix_spawn()
за исключением того, что система ищет исполняемый файл в списке каталогов, указанных переменной окруженияPATH
(так же, как и дляexecvp(3)
).Вызывает auditing event
os.posix_spawn
с аргументамиpath
,argv
,env
.Добавлено в версии 3.8.
Availability: См. документацию
posix_spawn()
.
-
os.
register_at_fork
(*, before=None, after_in_parent=None, after_in_child=None)¶ Регистрирует вызываемые файлы, которые будут выполняться при форкировании нового дочернего процесса с помощью
os.fork()
или аналогичных API клонирования процессов. Параметры являются необязательными и зависят только от ключевого слова. Каждый из них определяет свою точку вызова.before - это функция, вызываемая перед форкингом дочернего процесса.
after_in_parent - это функция, вызываемая из родительского процесса после форкинга дочернего процесса.
after_in_child - это функция, вызываемая из дочернего процесса.
Эти вызовы выполняются только в том случае, если ожидается, что управление вернется в интерпретатор Python. Обычный запуск
subprocess
не вызовет их, поскольку ребенок не собирается возвращаться в интерпретатор.Функции, зарегистрированные для выполнения до форкинга, вызываются в обратном порядке регистрации. Функции, зарегистрированные для выполнения после форкинга (либо в родительской, либо в дочерней), вызываются в порядке регистрации.
Обратите внимание, что вызовы
fork()
, сделанные сторонним кодом на языке C, не могут вызывать эти функции, если только он явно не вызываетPyOS_BeforeFork()
,PyOS_AfterFork_Parent()
иPyOS_AfterFork_Child()
.Не существует способа отменить регистрацию функции.
Availability: Unix.
Добавлено в версии 3.7.
-
os.
spawnl
(mode, path, ...)¶ -
os.
spawnle
(mode, path, ..., env)¶ -
os.
spawnlp
(mode, file, ...)¶ -
os.
spawnlpe
(mode, file, ..., env)¶ -
os.
spawnv
(mode, path, args)¶ -
os.
spawnve
(mode, path, args, env)¶ -
os.
spawnvp
(mode, file, args)¶ -
os.
spawnvpe
(mode, file, args, env)¶ Выполните программу путь в новом процессе.
(Обратите внимание, что модуль
subprocess
предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Особенно обратите внимание на раздел Замена устаревших функций модулем subprocess).Если mode равен
P_NOWAIT
, эта функция возвращает идентификатор нового процесса; если mode равенP_WAIT
, возвращает код выхода процесса, если он завершается нормально, или-signal
, где signal - сигнал, который убил процесс. В Windows идентификатор процесса на самом деле будет хэндлом процесса, поэтому его можно использовать с функциейwaitpid()
.Примечание для VxWorks, эта функция не возвращает
-signal
при завершении нового процесса. Вместо этого она вызывает исключение OSError.Варианты «l» и «v» функций
spawn*
отличаются тем, как передаются аргументы командной строки. С вариантами «l», пожалуй, проще всего работать, если количество параметров фиксировано на момент написания кода; отдельные параметры просто становятся дополнительными параметрами функцийspawnl*()
. Варианты «v» хороши, когда количество параметров переменное, при этом аргументы передаются в виде списка или кортежа как параметр args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.Варианты, включающие второе «p» в конце (
spawnlp()
,spawnlpe()
,spawnvp()
иspawnvpe()
), будут использовать переменную окруженияPATH
для нахождения файла программы. При замене окружения (с помощью одного из вариантов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)
Вызывает auditing event
os.spawn
с аргументамиmode
,path
,args
,env
.Availability: Unix, Windows.
spawnlp()
,spawnlpe()
,spawnvp()
иspawnvpe()
недоступны в Windows.spawnle()
иspawnve()
не являются потокобезопасными в Windows; рекомендуется использовать вместо них модульsubprocess
.Изменено в версии 3.6: Принимает path-like object.
-
os.
P_NOWAIT
¶ -
os.
P_NOWAITO
¶ Возможные значения параметра mode для семейства функций
spawn*
. Если задано одно из этих значений, функцииspawn*()
вернутся, как только будет создан новый процесс, с id процесса в качестве возвращаемого значения.Availability: Unix, Windows.
-
os.
P_WAIT
¶ Возможное значение параметра mode для семейства функций
spawn*
. Если в качестве mode указан этот параметр, функцииspawn*()
не вернутся, пока новый процесс не будет запущен до завершения, и вернут код выхода процесса при успешном запуске, или-signal
, если сигнал уничтожит процесс.Availability: Unix, Windows.
-
os.
P_DETACH
¶ -
os.
P_OVERLAY
¶ Возможные значения для параметра mode семейства функций
spawn*
. Они менее переносимы, чем перечисленные выше.P_DETACH
аналогичнаP_NOWAIT
, но новый процесс отделяется от консоли вызывающего процесса. Если используетсяP_OVERLAY
, текущий процесс будет заменен; функцияspawn*
не возвращается.Availability: Windows.
-
os.
startfile
(path[, operation][, arguments][, cwd][, show_cmd])¶ Запуск файла с помощью связанного с ним приложения.
Если операция не указана или
'open'
, это действует подобно двойному щелчку на файле в проводнике Windows или указанию имени файла в качестве аргумента для команды start из интерактивной командной оболочки: файл открывается любым приложением (если таковое имеется), с которым связано его расширение.Когда задается другая операция, это должен быть «командный глагол», определяющий, что следует сделать с файлом. Общие глаголы, документированные Microsoft, это
'print'
и'edit'
(для файлов), а также'explore'
и'find'
(для каталогов).При запуске приложения укажите аргументы, которые будут передаваться в виде одной строки. Этот аргумент может не иметь никакого значения при использовании этой функции для запуска документа.
Рабочий каталог по умолчанию наследуется, но может быть переопределен аргументом cwd. Это должен быть абсолютный путь. Относительный путь будет разрешен относительно этого аргумента.
Используйте show_cmd, чтобы переопределить стиль окна по умолчанию. Будет ли это иметь какой-либо эффект, зависит от запускаемого приложения. Значения - целые числа, поддерживаемые функцией Win32
ShellExecute()
.startfile()
возвращается сразу после запуска связанного приложения. Нет возможности подождать, пока приложение закроется, и нет способа получить статус выхода приложения. Параметр path является относительным к текущему каталогу или cwd. Если вы хотите использовать абсолютный путь, убедитесь, что первый символ не является косой чертой ('/'
) Используйтеpathlib
или функциюos.path.normpath()
, чтобы убедиться, что пути правильно закодированы для Win32.Чтобы уменьшить накладные расходы при запуске интерпретатора, функция Win32
ShellExecute()
не разрешается до первого вызова этой функции. Если функция не может быть разрешена, будет выдано сообщениеNotImplementedError
.Вызывает auditing event
os.startfile
с аргументамиpath
,operation
.Поднимает auditing event
os.startfile/2
с аргументамиpath
,operation
,arguments
,cwd
,show_cmd
.Availability: Windows.
Изменено в версии 3.10: Добавлены аргументы arguments, cwd и show_cmd, а также событие аудита
os.startfile/2
.
-
os.
system
(command)¶ Выполнение команды (строки) во вложенной оболочке. Это реализовано вызовом функции Standard C
system()
, и имеет те же ограничения. Измененияsys.stdin
и т.д. не отражаются в окружении выполняемой команды. Если команда генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет значение возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.На Unix возвращаемым значением является статус завершения процесса, закодированный в формате, указанном для
wait()
.В Windows возвращаемое значение - это значение, возвращаемое системной оболочкой после выполнения команды. Оболочка задается переменной окружения Windows
COMSPEC
: обычно это cmd.exe, которая возвращает статус завершения выполнения команды; в системах, использующих неродную оболочку, обратитесь к документации по оболочке.Модуль
subprocess
предоставляет более мощные средства для порождения новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этой функции. Некоторые полезные рецепты см. в разделе Замена устаревших функций модулем subprocess документацииsubprocess
.В Unix для преобразования результата (статуса выхода) в код выхода можно использовать
waitstatus_to_exitcode()
. В Windows результатом является непосредственно код выхода.Вызывает auditing event
os.system
с аргументомcommand
.Availability: Unix, Windows.
-
os.
times
()¶ Возвращает текущее время глобального процесса. Возвращаемое значение представляет собой объект с пятью атрибутами:
user
- время пользователяsystem
- системное времяchildren_user
- пользовательское время всех дочерних процессовchildren_system
- системное время всех дочерних процессовelapsed
- прошедшее реальное время с фиксированного момента в прошлом
Для обратной совместимости этот объект также ведет себя как кортеж, содержащий
user
,system
,children_user
,children_system
иelapsed
в таком порядке.См. страницу руководства по Unix times(2) и страницу руководства times(3) на Unix или the GetProcessTimes MSDN на Windows. В Windows известны только
user
иsystem
; остальные атрибуты равны нулю.Availability: Unix, Windows.
Изменено в версии 3.3: Тип возврата изменен с кортежа на кортежеподобный объект с именованными атрибутами.
-
os.
wait
()¶ Дождаться завершения дочернего процесса и вернуть кортеж, содержащий его pid и признак статуса выхода: 16-битное число, младший байт которого - номер сигнала, убившего процесс, а старший байт - статус выхода (если номер сигнала равен нулю); старший бит младшего байта установлен, если был создан файл ядра.
waitstatus_to_exitcode()
можно использовать для преобразования статуса выхода в код выхода.Availability: Unix.
См.также
waitpid()
может использоваться для ожидания завершения определенного дочернего процесса и имеет больше возможностей.
-
os.
waitid
(idtype, id, options)¶ Ожидание завершения одного или нескольких дочерних процессов. idtype может быть
P_PID
,P_PGID
,P_ALL
илиP_PIDFD
в Linux. id указывает pid для ожидания. options строится из ORing одного или более изWEXITED
,WSTOPPED
илиWCONTINUED
и дополнительно может быть ORed сWNOHANG
илиWNOWAIT
. Возвращаемым значением является объект, представляющий данные, содержащиеся в структуреsiginfo_t
, а именно:si_pid
,si_uid
,si_signo
,si_status
,si_code
илиNone
, если указаноWNOHANG
и нет дочерних объектов в состоянии ожидания.Availability: Unix.
Добавлено в версии 3.3.
-
os.
P_PID
¶ -
os.
P_PGID
¶ -
os.
P_ALL
¶ Это возможные значения для idtype в
waitid()
. Они влияют на то, как интерпретируется id.Availability: Unix.
Добавлено в версии 3.3.
-
os.
P_PIDFD
¶ Это специфичный для Linux idtype, который указывает, что id является файловым дескриптором, относящимся к процессу.
Availability: Linux 5.4+
Добавлено в версии 3.9.
-
os.
WEXITED
¶ -
os.
WSTOPPED
¶ -
os.
WNOWAIT
¶ Флаги, которые могут использоваться в опциях в
waitid()
, указывающих, какого дочернего сигнала ждать.Availability: Unix.
Добавлено в версии 3.3.
-
os.
CLD_EXITED
¶ -
os.
CLD_KILLED
¶ -
os.
CLD_DUMPED
¶ -
os.
CLD_TRAPPED
¶ -
os.
CLD_STOPPED
¶ -
os.
CLD_CONTINUED
¶ Это возможные значения для
si_code
в результате, возвращаемомwaitid()
.Availability: Unix.
Добавлено в версии 3.3.
Изменено в версии 3.9: Добавлены значения
CLD_KILLED
иCLD_STOPPED
.
-
os.
waitpid
(pid, options)¶ Детали этой функции отличаются в Unix и Windows.
В Unix: Дождаться завершения дочернего процесса, заданного идентификатором процесса pid, и вернуть кортеж, содержащий его идентификатор процесса и признак статуса завершения (в кодировке
wait()
). На семантику вызова влияет значение целого числа options, которое для нормальной работы должно быть0
.Если pid больше, чем
0
,waitpid()
запрашивает информацию о состоянии конкретного процесса. Если pid равен0
, запрос касается статуса любого дочернего процесса в группе процессов текущего процесса. Если pid равен-1
, запрос относится к любому дочернему процессу текущего процесса. Если pid меньше-1
, статус запрашивается для любого процесса в группе процессов-pid
(абсолютное значение pid).Когда вызов syscall возвращает -1, выдается сообщение
OSError
со значением errno.В Windows: Дождаться завершения процесса, заданного хэндлом процесса pid, и вернуть кортеж, содержащий pid и его статус завершения, сдвинутый влево на 8 бит (сдвиг облегчает кроссплатформенное использование функции). Значение pid меньше или равно
0
не имеет специального значения в Windows и вызывает исключение. Значение целочисленных options не имеет никакого эффекта. pid может ссылаться на любой процесс, чей id известен, не обязательно на дочерний процесс. Функцииspawn*
, вызываемые с помощьюP_NOWAIT
, возвращают соответствующие хэндлы процессов.waitstatus_to_exitcode()
можно использовать для преобразования статуса выхода в код выхода.Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключения, функция теперь повторяет системный вызов вместо того, чтобы вызвать исключение
InterruptedError
(см. обоснование в PEP 475).
-
os.
wait3
(options)¶ Аналогично
waitpid()
, за исключением того, что аргумент id процесса не задается, и возвращается трехэлементный кортеж, содержащий id дочернего процесса, индикацию статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. вresource
.getrusage()
. Аргумент option такой же, как и вwaitpid()
иwait4()
.waitstatus_to_exitcode()
можно использовать для преобразования статуса выхода в код выхода.Availability: Unix.
-
os.
wait4
(pid, options)¶ Аналогично
waitpid()
, за исключением того, что возвращается трехэлементный кортеж, содержащий идентификатор дочернего процесса, индикацию статуса завершения и информацию об использовании ресурсов. Подробнее об информации об использовании ресурсов см. вresource
.getrusage()
. Аргументы дляwait4()
те же, что и дляwaitpid()
.waitstatus_to_exitcode()
можно использовать для преобразования статуса выхода в код выхода.Availability: Unix.
-
os.
waitstatus_to_exitcode
(status)¶ Преобразование статуса ожидания в код выхода.
На Unix:
Если процесс завершился нормально (если
WIFEXITED(status)
истина), верните статус завершения процесса (returnWEXITSTATUS(status)
): результат больше или равен 0.Если процесс был завершен сигналом (если
WIFSIGNALED(status)
true), верните-signum
, где signum - номер сигнала, вызвавшего завершение процесса (верните-WTERMSIG(status)
): результат меньше 0.В противном случае выдается сообщение
ValueError
.
В Windows возвращается status, сдвинутый вправо на 8 бит.
В Unix, если процесс отслеживается или если
waitpid()
был вызван с опциейWUNTRACED
, вызывающая сторона должна сначала проверить, истинно лиWIFSTOPPED(status)
. Эта функция не должна вызываться, еслиWIFSTOPPED(status)
истинно.См.также
WIFEXITED()
,WEXITSTATUS()
,WIFSIGNALED()
,WTERMSIG()
,WIFSTOPPED()
,WSTOPSIG()
функции.Добавлено в версии 3.9.
-
os.
WNOHANG
¶ Опция
waitpid()
для немедленного возврата, если статус дочернего процесса не доступен немедленно. В этом случае функция возвращает(0, 0)
.Availability: Unix.
-
os.
WCONTINUED
¶ Эта опция заставляет дочерние процессы сообщать, если они были продолжены после остановки управления заданием с момента последнего сообщения об их статусе.
Availability: некоторые системы Unix.
-
os.
WUNTRACED
¶ Эта опция заставляет дочерние процессы сообщать, если они были остановлены, но их текущее состояние не было сообщено с момента остановки.
Availability: Unix.
Следующие функции принимают в качестве параметра код состояния процесса, возвращаемый system()
, wait()
или waitpid()
. Они могут быть использованы для определения состояния процесса.
-
os.
WCOREDUMP
(status)¶ Возвращает
True
, если для процесса был создан дамп ядра, в противном случае возвращаетFalse
.Эта функция должна использоваться только в том случае, если
WIFSIGNALED()
истина.Availability: Unix.
-
os.
WIFCONTINUED
(status)¶ Возвращает
True
, если остановленный дочерний процесс был возобновлен доставкойSIGCONT
(если процесс был продолжен после остановки управления заданием), иначе возвращаетFalse
.См. опцию
WCONTINUED
.Availability: Unix.
-
os.
WIFSTOPPED
(status)¶ Возвращает
True
, если процесс был остановлен подачей сигнала, в противном случае возвращаетFalse
.WIFSTOPPED()
возвращаетTrue
только если вызовwaitpid()
был выполнен с использованием опцииWUNTRACED
или если процесс отслеживается (см. ptrace(2)).Availability: Unix.
-
os.
WIFSIGNALED
(status)¶ Возвращает
True
, если процесс был завершен сигналом, в противном случае возвращаетFalse
.Availability: Unix.
-
os.
WIFEXITED
(status)¶ Верните
True
, если процесс завершился нормально, то есть вызовомexit()
или_exit()
, или возвратом изmain()
; иначе вернитеFalse
.Availability: Unix.
-
os.
WEXITSTATUS
(status)¶ Возвращает статус завершения процесса.
Эта функция должна использоваться только в том случае, если
WIFEXITED()
истина.Availability: Unix.
-
os.
WSTOPSIG
(status)¶ Возвращает сигнал, который вызвал остановку процесса.
Эта функция должна использоваться только в том случае, если
WIFSTOPPED()
истина.Availability: Unix.
-
os.
WTERMSIG
(status)¶ Возвращает номер сигнала, который вызвал завершение процесса.
Эта функция должна использоваться только в том случае, если
WIFSIGNALED()
истина.Availability: Unix.
Интерфейс к планировщику¶
Эти функции управляют тем, как операционная система выделяет процессу процессорное время. Они доступны только на некоторых платформах Unix. Для получения более подробной информации обратитесь к руководству по Unix.
Добавлено в версии 3.3.
Следующие политики планирования открыты, если они поддерживаются операционной системой.
-
os.
SCHED_OTHER
¶ Политика планирования по умолчанию.
-
os.
SCHED_BATCH
¶ Политика составления расписания для процессов, интенсивно использующих ЦП, которая пытается сохранить интерактивность на остальной части компьютера.
-
os.
SCHED_IDLE
¶ Политика составления расписания для фоновых задач с крайне низким приоритетом.
-
os.
SCHED_SPORADIC
¶ Политика планирования для спорадических серверных программ.
-
os.
SCHED_FIFO
¶ Политика составления расписания в порядке поступления.
-
os.
SCHED_RR
¶ Политика кругового планирования.
-
os.
SCHED_RESET_ON_FORK
¶ Этот флаг может быть ИЛИ с любой другой политикой планирования. Когда процесс с установленным флагом выполняет форкинг, политика планирования и приоритет его дочернего процесса сбрасываются на значение по умолчанию.
-
class
os.
sched_param
(sched_priority)¶ Этот класс представляет настраиваемые параметры планирования, используемые в
sched_setparam()
,sched_setscheduler()
иsched_getparam()
. Он является неизменяемым.На данный момент существует только один возможный параметр:
-
sched_priority
¶ Приоритет планирования для политики планирования.
-
-
os.
sched_get_priority_min
(policy)¶ Получение минимального значения приоритета для policy. policy - это одна из вышеприведенных констант политики планирования.
-
os.
sched_get_priority_max
(policy)¶ Получить максимальное значение приоритета для policy. policy - это одна из вышеприведенных констант политики планирования.
-
os.
sched_setscheduler
(pid, policy, param)¶ Установите политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. policy - одна из констант политики планирования, приведенных выше. param - экземпляр
sched_param
.
-
os.
sched_getscheduler
(pid)¶ Возвращает политику планирования для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс. Результатом является одна из констант политики планирования, приведенных выше.
-
os.
sched_setparam
(pid, param)¶ Установите параметры планирования для процесса с PID pid. Значение pid, равное 0, означает, что вызывающий процесс. param - это экземпляр
sched_param
.
-
os.
sched_getparam
(pid)¶ Возвращает параметры планирования в виде экземпляра
sched_param
для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
-
os.
sched_rr_get_interval
(pid)¶ Возвращает квант round-robin в секундах для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
-
os.
sched_yield
()¶ Добровольно отказаться от процессора.
-
os.
sched_setaffinity
(pid, mask)¶ Ограничить процесс с PID pid (или текущий процесс, если он равен нулю) набором процессоров. mask - итерабельность целых чисел, представляющих набор CPU, на которые должен быть ограничен процесс.
-
os.
sched_getaffinity
(pid)¶ Возвращает набор CPU, на которые ограничен процесс с PID pid (или текущий процесс, если он нулевой).
Различная информация о системе¶
-
os.
confstr
(name)¶ Возвращает строковые значения конфигурации системы. name указывает значение конфигурации, которое нужно получить; это может быть строка, которая является именем определенного системного значения; эти имена определены в ряде стандартов (POSIX, Unix 95, Unix 98 и других). Некоторые платформы определяют и дополнительные имена. Имена, известные операционной системе хоста, указаны в качестве ключей словаря
confstr_names
. Для конфигурационных переменных, не включенных в это отображение, также принимается передача целого числа для name.Если значение конфигурации, указанное name, не определено, возвращается
None
.Если name является строкой и неизвестно, выдается сообщение
ValueError
. Если конкретное значение для name не поддерживается хост-системой, даже если оно включено вconfstr_names
, выдается сообщениеOSError
с номером ошибкиerrno.EINVAL
.Availability: Unix.
-
os.
confstr_names
¶ Словарь, отображающий имена, принимаемые
confstr()
, на целочисленные значения, определенные для этих имен операционной системой хоста. Это можно использовать для определения набора имен, известных системе.Availability: Unix.
-
os.
cpu_count
()¶ Возвращает количество центральных процессоров в системе. Возвращает
None
, если не определено.Это число не эквивалентно количеству CPU, которые может использовать текущий процесс. Число используемых ЦП можно получить с помощью
len(os.sched_getaffinity(0))
.Добавлено в версии 3.4.
-
os.
getloadavg
()¶ Возвращает количество процессов в очереди выполнения системы, усредненное за последние 1, 5 и 15 минут, или выдает
OSError
, если среднее значение нагрузки недостижимо.Availability: Unix.
-
os.
sysconf
(name)¶ Возвращает целочисленные значения конфигурации системы. Если значение конфигурации, указанное name, не определено, возвращается
-1
. Комментарии относительно параметра name дляconfstr()
применимы и здесь; словарь, предоставляющий информацию об известных именах, задаетсяsysconf_names
.Availability: Unix.
-
os.
sysconf_names
¶ Словарь, отображающий имена, принимаемые
sysconf()
, на целочисленные значения, определенные для этих имен операционной системой хоста. Это можно использовать для определения набора имен, известных системе.Availability: Unix.
Следующие значения данных используются для поддержки операций манипулирования путями. Они определены для всех платформ.
Операции более высокого уровня над именами путей определены в модуле os.path
.
-
os.
curdir
¶ Постоянная строка, используемая операционной системой для ссылки на текущий каталог. Это
'.'
для Windows и POSIX. Также доступна черезos.path
.
-
os.
pardir
¶ Постоянная строка, используемая операционной системой для ссылки на родительский каталог. Это
'..'
для Windows и POSIX. Также доступна черезos.path
.
-
os.
sep
¶ Символ, используемый операционной системой для разделения компонентов имени пути. Это
'/'
для POSIX и'\\'
для Windows. Обратите внимание, что знание этого символа недостаточно для разбора или конкатенации имен путей — используйтеos.path.split()
иos.path.join()
— но иногда это бывает полезно. Также доступно черезos.path
.
-
os.
altsep
¶ Альтернативный символ, используемый операционной системой для разделения компонентов имени пути, или
None
, если существует только один символ-разделитель. В системах Windows этот символ имеет значение'/'
, гдеsep
- обратная косая черта. Также доступно черезos.path
.
-
os.
extsep
¶ Символ, отделяющий базовое имя файла от расширения; например,
'.'
вos.py
. Также доступен черезos.path
.
-
os.
pathsep
¶ Символ, обычно используемый операционной системой для разделения компонентов пути поиска (как в
PATH
), например':'
для POSIX или';'
для Windows. Также доступен черезos.path
.
-
os.
defpath
¶ Путь поиска по умолчанию, используемый
exec*p*
иspawn*p*
, если среда не имеет ключа'PATH'
. Также доступен черезos.path
.
-
os.
linesep
¶ Строка, используемая для разделения (или, скорее, завершения) строк на текущей платформе. Это может быть один символ, например
'\n'
для POSIX, или несколько символов, например'\r\n'
для Windows. Не используйте os.linesep в качестве терминатора строк при записи файлов, открытых в текстовом режиме (по умолчанию); вместо него используйте один символ'\n'
на всех платформах.
-
os.
devnull
¶ Путь к файлу нулевого устройства. Например:
'/dev/null'
для POSIX,'nul'
для Windows. Также доступно черезos.path
.
-
os.
RTLD_LAZY
¶ -
os.
RTLD_NOW
¶ -
os.
RTLD_GLOBAL
¶ -
os.
RTLD_LOCAL
¶ -
os.
RTLD_NODELETE
¶ -
os.
RTLD_NOLOAD
¶ -
os.
RTLD_DEEPBIND
¶ Флаги для использования с функциями
setdlopenflags()
иgetdlopenflags()
. Что означают различные флаги, смотрите на странице руководства по Unix dlopen(3).Добавлено в версии 3.3.
Случайные числа¶
-
os.
getrandom
(size, flags=0)¶ Получить до размера случайных байтов. Функция может вернуть меньше байтов, чем запрошено.
Эти байты можно использовать для засева генераторов случайных чисел в пространстве пользователя или для криптографических целей.
getrandom()
полагается на энтропию, собранную из драйверов устройств и других источников шума окружающей среды. Излишнее считывание большого количества данных будет иметь негативное влияние на других пользователей устройств/dev/random
и/dev/urandom
.Аргумент flags представляет собой битовую маску, которая может содержать ноль или более из следующих значений, объединенных вместе:
os.GRND_RANDOM
иGRND_NONBLOCK
.См. также Linux getrandom() manual page.
Availability: Linux 3.17 и новее.
Добавлено в версии 3.6.
-
os.
urandom
(size)¶ Возвращает строку случайных байтов size, пригодную для использования в криптографии.
Эта функция возвращает случайные байты из специфического для ОС источника случайности. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации ОС.
В Linux, если системный вызов
getrandom()
доступен, он используется в блокирующем режиме: блокируется до тех пор, пока не будет инициализирован системный пул энтропии urandom (128 бит энтропии собираются ядром). Обоснование см. в PEP 524. В Linux функциюgetrandom()
можно использовать для получения случайных байтов в неблокирующем режиме (используя флагGRND_NONBLOCK
) или для опроса, пока не будет инициализирован системный пул случайной энтропии.В Unix-подобной системе случайные байты считываются с устройства
/dev/urandom
. Если устройство/dev/urandom
недоступно или не читается, возникает исключениеNotImplementedError
.В Windows будет использоваться
CryptGenRandom()
.См.также
Модуль
secrets
предоставляет функции более высокого уровня. Для получения простого в использовании интерфейса к генератору случайных чисел, предоставляемому вашей платформой, смотритеrandom.SystemRandom
.Изменено в версии 3.6.0: В Linux
getrandom()
теперь используется в блокирующем режиме для повышения безопасности.Изменено в версии 3.5.2: В Linux, если системный вызов
getrandom()
доступен, он используется в блокирующем режиме: блокируется до тех пор, пока не будет инициализирован системный пул энтропии urandom (128 бит энтропии собираются ядром). Обоснование см. в/dev/urandom
. В Linux функцию можно использовать для получения случайных байтов в неблокирующем режиме (используя флаг ) или для опроса, пока не будет инициализирован системный пул случайной энтропии.Изменено в версии 3.5: В Linux 3.17 и новее теперь используется системный вызов
getrandom()
, когда он доступен. В OpenBSD 5.6 и новее теперь используется функция Cgetentropy()
. Эти функции позволяют избежать использования внутреннего файлового дескриптора.
-
os.
GRND_NONBLOCK
¶ По умолчанию, при чтении из
/dev/random
,getrandom()
блокируется, если нет доступных случайных байтов, а при чтении из/dev/urandom
блокируется, если пул энтропии еще не инициализирован.Если установлен флаг
GRND_NONBLOCK
, тоgetrandom()
в этих случаях не блокируется, а вместо этого сразу поднимаетсяBlockingIOError
.Добавлено в версии 3.6.
-
os.
GRND_RANDOM
¶ Если этот бит установлен, то случайные байты берутся из пула
/dev/random
вместо пула/dev/urandom
.Добавлено в версии 3.6.