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* не поддерживаются.
На платформах WebAssembly
wasm32-emscripten
иwasm32-wasi
большие части модуляos
недоступны или работают по-другому. API, относящиеся к процессам (например,fork()
,execve()
), сигналы (например,kill()
,wait()
), и ресурсы (например,nice()
) недоступны. Другие, такие какgetuid()
иgetpid()
, являются эмулируемыми или заглушками.
Примечание
Все функции в этом модуле генерируют OSError
(или их подклассы) в случае недопустимых или недоступных имен файлов и путей к ним или других аргументов, которые имеют правильный тип, но не принимаются операционной системой.
- os.name¶
Имя импортированного модуля, зависящего от операционной системы. На данный момент зарегистрированы следующие имена:
'posix'
,'nt'
,'java'
.См.также
sys.platform
имеет более высокую степень детализации.os.uname()
содержит информацию о версии, зависящей от системы.Модуль
platform
обеспечивает детальную проверку подлинности системы.
Имена файлов, аргументы командной строки и переменные среды¶
В Python имена файлов, аргументы командной строки и переменные среды представляются с использованием типа string. В некоторых системах перед передачей в операционную систему необходимо расшифровать эти строки в байты и обратно. 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, что означает, что не поддающиеся расшифровке байты заменяются символом Unicode U+DC*xx* при декодировании, и они снова преобразуются в исходный байт при кодировании.
Значение file system encoding должно гарантировать успешное декодирование всех байт меньше 128. Если кодировка файловой системы не обеспечивает такой гарантии, функции API могут вызвать значение UnicodeError
.
Смотрите также locale encoding.
Режим Python UTF-8¶
Добавлено в версии 3.7: Смотрите PEP 540 для получения более подробной информации.
Режим Python UTF-8 игнорирует 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 включен, если языковой стандарт LC_CTYPE равен C
или POSIX
при запуске Python (смотрите функцию PyConfig_Read()
).
Его можно включить или отключить с помощью параметра командной строки -X utf8
и переменной окружения PYTHONUTF8
.
Если переменная среды PYTHONUTF8
вообще не задана, то интерпретатор по умолчанию использует текущие настройки языкового стандарта, если только текущий языковой стандарт не идентифицирован как устаревший языковой стандарт на основе ASCII (как описано для PYTHONCOERCECLOCALE
), и приведение к языковому стандарту не выполняется. либо отключен, либо выходит из строя. В таких устаревших языковых стандартах интерпретатор по умолчанию будет включать режим UTF-8, если только явно не указано, что этого делать нельзя.
Режим Python UTF-8 может быть включен только при запуске Python. Его значение можно прочитать из sys.flags.utf8_mode
.
Смотрите также UTF-8 mode on Windows и filesystem encoding and error handler.
См.также
- PEP 686
В Python 3.15 по умолчанию будет установлено значение Режим Python UTF-8.
Параметры процесса¶
Эти функции и элементы данных предоставляют информацию и управляют текущим процессом и пользователем.
- os.ctermid()¶
Возвращает имя файла, соответствующее управляющему терминалу процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.environ¶
Объект mapping, ключи и значения которого являются строками, представляющими среду процесса. Например,
environ['HOME']
- это путь к вашему домашнему каталогу (на некоторых платформах), который эквивалентенgetenv("HOME")
в C.Это сопоставление фиксируется при первом импорте модуля
os
, как правило, во время запуска Python как части обработкиsite.py
. Изменения в среде, внесенные после этого времени, не отражаются вos.environ
, за исключением изменений, внесенных путем прямого измененияos.environ
.Это сопоставление может использоваться для изменения среды, а также для запроса к среде.
putenv()
будет вызываться автоматически при изменении сопоставления.В Unix ключи и значения используют обработчик ошибок
sys.getfilesystemencoding()
и'surrogateescape'
. Используйтеenvironb
, если вы хотите использовать другую кодировку.В Windows клавиши преобразуются в верхний регистр. Это также применяется при получении, настройке или удалении элемента. Например,
environ['monty'] = 'python'
сопоставляет ключ'MONTY'
со значением'python'
.Примечание
Прямой вызов
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 имя файла в 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 - это строка. Обратите внимание, что, поскольку
getenv()
используетos.environ
, отображениеgetenv()
аналогично фиксируется при импорте, и функция может не отражать будущие изменения среды.В Unix ключи и значения декодируются с помощью обработчика ошибок
sys.getfilesystemencoding()
и'surrogateescape'
. Используйтеos.getenvb()
, если вы хотите использовать другую кодировку.Availability: Unix, Windows.
- os.getenvb(key, default=None)¶
Возвращает значение переменной окружения key в виде байт, если она существует, или default, если ее нет. ключ должен быть в байтах. Обратите внимание, что, поскольку
getenvb()
используетos.environb
, отображениеgetenvb()
аналогично фиксируется при импорте, и функция может не отражать будущие изменения среды.getenvb()
доступно только в том случае, еслиsupports_bytes_environ
равноTrue
.Availability: Unix.
Добавлено в версии 3.2.
- os.get_exec_path(env=None)¶
Возвращает список каталогов, в которых будет выполняться поиск именованного исполняемого файла, аналогично оболочке, при запуске процесса. env, если он указан, должен быть словарем переменных среды для поиска ПУТИ. По умолчанию, когда используется значение env
None
,environ
.Добавлено в версии 3.2.
- os.getegid()¶
Возвращает эффективный идентификатор группы текущего процесса. Это соответствует разряду «set id» в файле, выполняемом в текущем процессе.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.geteuid()¶
Возвращает действующий идентификатор пользователя текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.getgid()¶
Возвращает реальный идентификатор группы текущего процесса.
Availability: Unix.
Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.
- os.getgrouplist(user, group, /)¶
Возвращает список идентификаторов групп, к которым принадлежит пользователь. Если группы нет в списке, она включена; обычно группа указывается в качестве поля идентификатора группы в записи пароля для пользователя, поскольку в противном случае этот идентификатор группы может быть пропущен.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.getgroups()¶
Возвращает список дополнительных идентификаторов групп, связанных с текущим процессом.
Availability: Unix, не Emscripten, не БЫЛ I.
Примечание
В Mac OS поведение
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, не Emscripten, не БЫЛ я.
- os.getpgid(pid)¶
Возвращает идентификатор группы процессов с помощью идентификатора процесса pid. Если значение pid равно 0, возвращается идентификатор группы процессов текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.getpgrp()¶
Возвращает идентификатор текущей группы процессов.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.getpid()¶
Возвращает текущий идентификатор процесса.
Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.
- os.getppid()¶
Возвращает идентификатор родительского процесса. Когда родительский процесс завершает работу, в Unix возвращается идентификатор процесса инициализации (1), в Windows это все тот же идентификатор, который может быть повторно использован другим процессом.
Availability: Unix, Windows, не Emscripten, не БЫЛ я.
Изменено в версии 3.2: Добавлена поддержка Windows.
- os.getpriority(which, who)¶
Получите приоритет при планировании программы. Значение , которое является одним из
PRIO_PROCESS
,PRIO_PGRP
, илиPRIO_USER
, и who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS
, идентификатор группы процессов дляPRIO_PGRP
и идентификатор пользователя дляPRIO_USER
). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.PRIO_PROCESS¶
- os.PRIO_PGRP¶
- os.PRIO_USER¶
Параметры для функций
getpriority()
иsetpriority()
.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.getresuid()¶
Возвращает кортеж (ruid, euid, suid), обозначающий реальные, эффективные и сохраненные идентификаторы пользователей текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.2.
- os.getresgid()¶
Возвращает кортеж (rgid, egid, sgid), обозначающий реальные, эффективные и сохраненные идентификаторы групп текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.2.
- os.getuid()¶
Возвращает реальный идентификатор пользователя текущего процесса.
Availability: Unix.
Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.
- os.initgroups(username, gid, /)¶
Вызовите системную функцию initgroups(), чтобы инициализировать список группового доступа, включив в него все группы, членом которых является указанное имя пользователя, а также указанный идентификатор группы.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.2.
- os.putenv(key, value, /)¶
Присвойте переменной среды с именем key значение string 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, не Emscripten, не БЫЛ I.
- os.seteuid(euid, /)¶
Установите действующий идентификатор пользователя текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.setgid(gid, /)¶
Установите идентификатор группы текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.setgroups(groups, /)¶
Задайте для списка дополнительных идентификаторов групп, связанных с текущим процессом, значение groups. groups должно быть последовательностью, и каждый элемент должен быть целым числом, идентифицирующим группу. Обычно эта операция доступна только суперпользователю.
Availability: Unix, не Emscripten, не БЫЛ I.
Примечание
В macOS длина groups не может превышать заданного системой максимального количества эффективных идентификаторов групп, обычно 16. Смотрите документацию для
getgroups()
о случаях, когда при вызове функции setgroups() может быть возвращен не тот же список групп, что и при вызове функции setgroups().
- os.setpgrp()¶
Вызовите системный вызов : c:func:!setpgrp или
setpgrp(0, 0)
в зависимости от того, какая версия реализована (если таковая имеется). Семантику смотрите в руководстве по Unix.Availability: Unix, не Emscripten, не БЫЛ I.
- os.setpgid(pid, pgrp, /)¶
Вызовите системный вызов:c:func:!setpgid, чтобы присвоить идентификатору группы процессов с идентификатором pid значение группы процессов с идентификатором pgrp. Семантику смотрите в руководстве по Unix.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.setpriority(which, who, priority)¶
Установите приоритет планирования программы. Значение , которое является одним из
PRIO_PROCESS
,PRIO_PGRP
, илиPRIO_USER
, и who интерпретируется относительно which (идентификатор процесса дляPRIO_PROCESS
, идентификатор группы процессов дляPRIO_PGRP
и идентификатор пользователя дляPRIO_USER
). Нулевое значение для who обозначает (соответственно) вызывающий процесс, группу процессов вызывающего процесса или реальный идентификатор пользователя вызывающего процесса. priority - это значение в диапазоне от -20 до 19. Приоритет по умолчанию равен 0; более низкие приоритеты обеспечивают более благоприятное планирование.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.setregid(rgid, egid, /)¶
Установите реальные и действенные идентификаторы групп для текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.setresgid(rgid, egid, sgid, /)¶
Установите реальные, эффективные и сохраненные идентификаторы групп для текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.2.
- os.setresuid(ruid, euid, suid, /)¶
Установите реальные, эффективные и сохраненные идентификаторы пользователей текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.2.
- os.setreuid(ruid, euid, /)¶
Установите реальные и действенные идентификаторы пользователей текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.getsid(pid, /)¶
Вызовите системный вызов
getsid()
. Семантику смотрите в руководстве по Unix.Availability: Unix, не Emscripten, не БЫЛ I.
- os.setsid()¶
Вызовите системный вызов
setsid()
. Семантику смотрите в руководстве по Unix.Availability: Unix, не Emscripten, не БЫЛ I.
- os.setuid(uid, /)¶
Установите идентификатор пользователя текущего процесса.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.strerror(code, /)¶
Возвращает сообщение об ошибке, соответствующее коду ошибки в code. На платформах, где
strerror()
возвращаетNULL
при указании неизвестного номера ошибки, выводится значениеValueError
.
- os.supports_bytes_environ¶
True
если тип собственной операционной системы для среды - bytes (например,False
в Windows).Добавлено в версии 3.2.
- os.umask(mask, /)¶
Установите текущую числовую umask и верните предыдущую umask.
Функция является заглушкой в Emscripten и была создана мной, смотрите Платформы веб-сборки для получения дополнительной информации.
- 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)¶
Скопируйте количество байт из файлового дескриптора 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.
- os.dup(fd, /)¶
Возвращает дубликат файлового дескриптора fd. Новым файловым дескриптором будет non-inheritable.
В Windows при дублировании стандартного потока (0: stdin, 1: stdout, 2: stderr) новым файловым дескриптором будет inheritable.
Availability: это был не я.
Изменено в версии 3.4: Новый файловый дескриптор теперь не передается по наследству.
- os.dup2(fd, fd2, inheritable=True)¶
Продублируйте файловый дескриптор fd в fd2, при необходимости закрыв сначала последний. Верните fd2. Новый файловый дескриптор по умолчанию имеет значение inheritable или не наследуется, если значение наследуемый равно
False
.Availability: это был не я.
Изменено в версии 3.4: Добавьте необязательный параметр наследуемый.
Изменено в версии 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.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
- 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.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
- os.fdatasync(fd)¶
Принудительная запись файла с помощью filedescriptor fd на диск. Не приводит к принудительному обновлению метаданных.
Availability: Unix.
Примечание
Эта функция недоступна в Mac OS.
- os.fpathconf(fd, 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)¶
Принудительная запись файла на диск с помощью filedescriptor fd. В Unix для этого вызывается функция native
fsync()
; в Windows - функция MS_commit()
.Если вы начинаете с буферизованного Python file object f, сначала выполните
f.flush()
, а затемos.fsync(f.fileno())
, чтобы убедиться, что все внутренние буферы, связанные с f, записаны на диск.Availability: Unix, Windows.
- os.ftruncate(fd, length, /)¶
Обрежьте файл, соответствующий файловому дескриптору fd, так, чтобы его размер был не более длины в байтах. Начиная с версии 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.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
Добавлено в версии 3.5.
- os.isatty(fd, /)¶
Возвращает
True
, если файловый дескриптор fd открыт и подключен к устройству, подобному tty, в противном случаеFalse
.
- os.lockf(fd, cmd, len, /)¶
Примените, протестируйте или снимите блокировку POSIX для открытого файлового дескриптора. fd - это открытый файловый дескриптор. cmd указывает используемую команду - одну из
F_LOCK
,F_TLOCK
,F_ULOCK
илиF_TEST
. len указывает раздел файла, который необходимо заблокировать.Создает 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.login_tty(fd, /)¶
Подготовьте tty, файловым дескриптором которого является fd, для нового сеанса входа в систему. Сделайте вызывающий процесс ведущим сеансом; сделайте tty управляющим tty, stdin, stdout и stderr вызывающего процесса; закройте fd.
Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.11.
- os.lseek(fd, pos, whence, /)¶
Установите текущее положение файлового дескриптора fd в положение pos, измененное на whence, и верните новое положение в байтах относительно начала файла. Допустимыми значениями для whence являются:
SEEK_SET
или0
– установить pos относительно начала файлаSEEK_CUR
или1
– установить pos относительно текущего положения файлаSEEK_END
или2
– установить pos относительно конца файлаSEEK_HOLE
– установите pos в качестве следующего местоположения данных относительно posSEEK_DATA
– установите pos на следующую ячейку данных относительно pos
Изменено в версии 3.3: Добавьте поддержку
SEEK_HOLE
иSEEK_DATA
.
- os.SEEK_SET¶
- os.SEEK_CUR¶
- os.SEEK_END¶
Параметры для функции
lseek()
и методаseek()
в file-like objects, с помощью которых можно настроить индикатор положения файла.SEEK_SET
Отрегулируйте положение файла относительно начала файла.
SEEK_CUR
Отрегулируйте положение файла относительно текущего положения файла.
SEEK_END
Отрегулируйте положение файла относительно конца файла.
Их значения равны 0, 1 и 2 соответственно.
- os.SEEK_HOLE¶
- os.SEEK_DATA¶
Параметры функции
lseek()
и методаseek()
в file-like objects для поиска файловых данных и пробелов в редко размещенных файлах.SEEK_DATA
Измените смещение файла относительно следующего местоположения, содержащего данные, относительно позиции поиска.
SEEK_HOLE
Измените смещение файла до следующего местоположения, содержащего отверстие, относительно позиции поиска. Отверстие определяется как последовательность нулей.
Примечание
Эти операции имеют смысл только для файловых систем, которые их поддерживают.
Availability: Linux >= 3.1, macOS, Unix
Добавлено в версии 3.3.
- 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()
. Их можно комбинировать с помощью побитового оператора OR |
. Некоторые из них доступны не на всех платформах. Для получения описаний их доступности и использования обратитесь к странице руководства 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¶
Вышеуказанные константы доступны только в Mac OS.
Изменено в версии 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)
для pti и tty соответственно. Новыми файловыми дескрипторами будут non-inheritable. Для (немного) более портативного подхода используйте модульpty
.Availability: Unix, не Emscripten, не БЫЛ I.
Изменено в версии 3.4: Новые файловые дескрипторы теперь не передаются по наследству.
- os.pipe()¶
Создайте канал. Верните пару файловых дескрипторов
(r, w)
, пригодных для чтения и записи соответственно. Новым файловым дескриптором будет non-inheritable.Availability: Unix, Windows.
Изменено в версии 3.4: Новые файловые дескрипторы теперь не передаются по наследству.
- os.pipe2(flags, /)¶
Создайте канал с флагами, установленными атомарно. флаги могут быть созданы путем объединения одного или нескольких из этих значений:
O_NONBLOCK
,O_CLOEXEC
. Возвращает пару файловых дескрипторов(r, w)
, пригодных для чтения и записи соответственно.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.posix_fallocate(fd, offset, len, /)¶
Гарантирует, что для файла, указанного в fd, выделено достаточно места на диске, начиная с offset и продолжая len байтами.
Availability: Unix, а не Emscripten.
Добавлено в версии 3.3.
- os.posix_fadvise(fd, offset, len, advice, /)¶
Объявляет о намерении получить доступ к данным по определенному шаблону, что позволяет ядру выполнить оптимизацию. Совет применим к области файла, указанной в fd, начиная с offset и заканчивая len байтами. совет - это один из
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 содержит побитовое значение ИЛИ, равное нулю или более, из следующих флагов:
Возвращает общее количество фактически прочитанных байт, которое может быть меньше общей емкости всех объектов.
Операционная система может установить ограничение (
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
и установит значение errno равнымerrno.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 содержит побитовое значение ИЛИ, равное нулю или более, из следующих флагов:
Возвращает общее количество фактически записанных байт.
Операционная система может установить ограничение (
sysconf()
значение'SC_IOV_MAX'
) на количество буферов, которые могут быть использованы.Объедините функциональность
os.writev()
иos.pwrite()
.Availability: Linux >= 2.6.30, FreeBSD >= 6.0, OpenBSD >= 2.7, AIX >= 7.1.
Для использования флагов требуется Linux >= 4.6.
Добавлено в версии 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)
Скопируйте количество байт из файлового дескриптора 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, не Emscripten, не БЫЛ I.
Примечание
Более высокоуровневую оболочку для
sendfile()
смотрите вsocket.socket.sendfile()
.Добавлено в версии 3.3.
Изменено в версии 3.9: Параметры out и in были переименованы в out_fd и in_fd.
- os.SF_NODISKIO¶
- os.SF_MNOWAIT¶
- os.SF_SYNC¶
Параметры функции
sendfile()
, если они поддерживаются реализацией.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.SF_NOCACHE¶
Параметр функции
sendfile()
, если это поддерживается реализацией. Данные не будут кэшироваться в виртуальной памяти и будут освобождены впоследствии.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.11.
- os.set_blocking(fd, blocking, /)¶
Установите режим блокировки для указанного файлового дескриптора. Установите флажок
O_NONBLOCK
, если для блокировки используется значениеFalse
, в противном случае снимите флажок.Смотрите также
get_blocking()
иsocket.socket.setblocking()
.Availability: Unix.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
Добавлено в версии 3.5.
- os.splice(src, dst, count, offset_src=None, offset_dst=None)¶
Перенесите количество байт из файлового дескриптора 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, /)¶
Запишите содержимое 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
.
На платформах WebAssembly wasm32-emscripten
и wasm32-wasi
файловый дескриптор не может быть изменен.
- os.get_inheritable(fd, /)¶
Получите флаг «наследуемый» для указанного файлового дескриптора (логическое значение).
- os.set_inheritable(fd, inheritable, /)¶
Установите флаг «наследуемый» для указанного файлового дескриптора.
- os.get_handle_inheritable(handle, /)¶
Получите флаг «наследуемый» для указанного дескриптора (логическое значение).
Availability: Окна.
- os.set_handle_inheritable(handle, inheritable, /)¶
Установите флаг «наследуемый» для указанного дескриптора.
Availability: Окна.
Файлы и каталоги¶
На некоторых платформах Unix многие из этих функций поддерживают одну или несколько из перечисленных функций:
указание файлового дескриптора: Обычно аргумент path, предоставляемый функциям в модуле
os
, должен быть строкой, указывающей путь к файлу. Однако некоторые функции теперь в качестве альтернативы принимают открытый файловый дескриптор в качестве аргумента path. Затем функция будет работать с файлом, на который ссылается дескриптор. (Для систем POSIX Python будет вызывать вариант функции с префиксомf
(например, вызыватьfchdir
вместоchdir
).)Вы можете проверить, можно ли указать path в качестве файлового дескриптора для конкретной функции на вашей платформе, используя
os.supports_fd
. Если эта функция недоступна, при ее использовании возникнетNotImplementedError
.Если функция также поддерживает аргументы dir_fd или follow_symlinks, то указание одного из них при указании path в качестве файлового дескриптора является ошибкой.
пути относительно дескрипторов каталогов: Если dir_fd не является
None
, это должен быть файловый дескриптор, ссылающийся на каталог, и путь, с которым нужно работать, должен быть относительным; тогда путь будет относительным к этому каталогу. Если путь является абсолютным, dir_fd игнорируется. (Для систем POSIX Python будет вызывать вариант функции с суффиксомat
и, возможно, с префиксомf
(например, вызыватьfaccessat
вместоaccess
).Вы можете проверить, поддерживается ли dir_fd для определенной функции на вашей платформе, используя
os.supports_dir_fd
. Если она недоступна, при ее использовании будет отображатьсяNotImplementedError
.
не использовать символические ссылки: Если значение follow_symlinks равно
False
, а последним элементом пути, с которым нужно работать, является символическая ссылка, функция будет работать с самой символической ссылкой, а не с файлом, на который указывает ссылка. (Для систем POSIX Python вызовет вариант функцииl...
.)Вы можете проверить, поддерживается ли функция follow_symlinks для конкретной функции на вашей платформе, используя
os.supports_follow_symlinks
. Если она недоступна, при ее использовании появитсяNotImplementedError
.
- os.access(path, mode, *, dir_fd=None, effective_ids=False, follow_symlinks=True)¶
Используйте реальный uid/gid для проверки доступа к path. Обратите внимание, что в большинстве операций будет использоваться эффективный uid/gid, поэтому эту процедуру можно использовать в среде suid/sgid, чтобы проверить, имеет ли вызывающий пользователь указанный доступ к path. mode должен быть
F_OK
для проверки наличия path, или он может быть включающим ИЛИ одного или нескольких изR_OK
,W_OK
, иX_OK
для проверки разрешений. ВернитеTrue
, если доступ разрешен,False
, если нет. Дополнительную информацию смотрите на странице руководства по Unix access(2).Эта функция может поддерживать указание paths relative to directory descriptors и not following symlinks.
If effective_ids is
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()
для проверки существования, читаемости, записи и исполняемости path, соответственно.
- 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, не Emscripten, не БЫЛ I.
Изменено в версии 3.3: Добавлен параметр follow_symlinks.
Изменено в версии 3.6: Принимает значение path-like object.
- os.chmod(path, mode, *, dir_fd=None, follow_symlinks=True)¶
Измените режим path на числовой mode. mode может принимать одно из следующих значений (как определено в модуле
stat
) или их побитовую комбинацию.:Эта функция может поддерживать specifying a file descriptor, paths relative to directory descriptors и not following symlinks.
Примечание
Хотя Windows поддерживает
chmod()
, вы можете установить только флаг «только для чтения» для файла (с помощью константstat.S_IWRITE
иstat.S_IREAD
или соответствующего целого значения). Все остальные биты игнорируются.Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
Создает 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.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
Добавлено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла, а также аргументов dir_fd и follow_symlinks.
Изменено в версии 3.6: Поддерживает значение path-like object.
- os.chroot(path)¶
Измените корневой каталог текущего процесса на path.
Availability: Unix, не Emscripten, не БЫЛ I.
Изменено в версии 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 числовые флаги, например,
chflags()
, но не переходите по символьным ссылкам. Начиная с версии Python 3.3, это эквивалентноos.chflags(path, flags, follow_symlinks=False)
.Создает auditing event
os.chflags
с аргументамиpath
,flags
.Availability: Unix, не Emscripten, не БЫЛ I.
Изменено в версии 3.6: Принимает значение path-like object.
- os.lchmod(path, mode)¶
Измените режим path на числовой mode. Если путь является символической ссылкой, это влияет на символическую ссылку, а не на цель. Возможные значения mode смотрите в документации для
chmod()
. Начиная с Python 3.3, это эквивалентноos.chmod(path, mode, follow_symlinks=False)
.lchmod()
не является частью POSIX, но в реализациях Unix он может быть, если поддерживается изменение режима символических ссылок.Создает auditing event
os.chmod
с аргументамиpath
,mode
,dir_fd
.Availability: Unix, не Linux, FreeBSD >= 1.3, NetBSD >= 1.3, не OpenBSD
Изменено в версии 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, а не Emscripten.
Изменено в версии 3.2: Добавлена поддержка Windows.
Изменено в версии 3.3: Добавлены параметры src_dir_fd, dst_dir_fd и follow_symlinks.
Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.
- os.listdir(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 цифры восьмеричного представления режима *), их значение зависит от платформы. На некоторых платформах они игнорируются, и для их установки следует явно вызвать
chmod()
.В Windows mode из
0o700
специально используется для применения контроля доступа к новому каталогу таким образом, чтобы доступ был только у текущего пользователя и администраторов. Другие значения mode игнорируются.Эта функция также может поддерживать 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.
Изменено в версии 3.11.10: Windows теперь поддерживает режим, равный
0o700
.
- 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.
Файлообменники - это каналы, к которым можно обращаться как к обычным файлам. Файлообменники существуют до тех пор, пока они не будут удалены (например, с помощью
os.unlink()
). Как правило, FIFO используются для встречи процессов типа «клиент» и «сервер»: сервер открывает FIFO для чтения, а клиент открывает его для записи. Обратите внимание, чтоmkfifo()
не открывает FIFO - он просто создает точку встречи.Availability: Unix, не Emscripten, не БЫЛ I.
Изменено в версии 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, не Emscripten, не БЫЛ I.
Изменено в версии 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)¶
Возвращает информацию о конфигурации системы, относящуюся к именованному файлу. имя указывает значение конфигурации для извлечения; это может быть строка, представляющая собой имя определенного системного значения; эти имена указаны в ряде стандартов (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)
.Если path является строковым объектом (прямо или косвенно через интерфейс
PathLike
), результатом также будет строковый объект, и вызов может вызвать ошибку UnicodeDecodeError. Если path является объектом bytes (прямым или косвенным образом), результатом будет объект bytes.Эта функция также может поддерживать 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.
Добавлена поддержка переходов между каталогами и изменен способ возврата пути подстановки (который обычно включает префикс
\\?\
) вместо необязательного поля «имя для печати», которое возвращалось ранее.
- os.remove(path, *, dir_fd=None)¶
Удалите (delete) файл path. Если path является каталогом, ставится
OSError
. Используйте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
. Операция может завершиться ошибкой, если src и dst находятся в разных файловых системах. Используйтеshutil.move()
для поддержки перехода в другую файловую систему.В 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 и летнего времени.
- 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 и летнего времени.
- 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-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()
path был file descriptor, то атрибутpath
будет таким же, как и атрибутname
.Атрибутом
path
будетbytes
, если аргументscandir()
path имеет типbytes
иstr
в противном случае. Используйтеfsdecode()
для декодирования байтовых имен файлов.
- inode()¶
Возвращает индексный номер записи.
Результат кэшируется в объекте
os.DirEntry
. Используйтеos.stat(entry.path, follow_symlinks=False).st_ino
для получения актуальной информации.При первом, некэшированном вызове, системный вызов требуется в Windows, но не в Unix.
- is_dir(*, follow_symlinks=True)¶
Возвращает
True
, если эта запись является каталогом или символьной ссылкой, указывающей на каталог; возвращаетFalse
, если запись является файлом любого другого типа или указывает на него, или если он больше не существует.Если значение follow_symlinks равно
False
, вернитеTrue
только в том случае, если эта запись является каталогом (без перехода по символическим ссылкам); вернитеFalse
, если запись представляет собой файл любого другого типа или если он больше не существует.Результат кэшируется в объекте
os.DirEntry
с отдельным кэшем для follow_symlinksTrue
иFalse
. Позвоните поos.stat()
вместе сstat.S_ISDIR()
, чтобы получить актуальную информацию.При первом, некэшированном вызове, системный вызов в большинстве случаев не требуется. В частности, для несимволических ссылок ни Windows, ни Unix не требуется системный вызов, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN
. Если запись является символической ссылкой, то для перехода по символической ссылке потребуется системный вызов, если только значение follow_symlinks не равноFalse
.Этот метод может вызвать
OSError
, напримерPermissionError
, ноFileNotFoundError
перехватывается и не вызывается.
- is_file(*, follow_symlinks=True)¶
Возвращает
True
, если эта запись является файлом или символьной ссылкой, указывающей на файл; возвращаетFalse
, если запись является каталогом или указывает на другую запись, не относящуюся к файлу, или если она больше не существует.Если значение follow_symlinks равно
False
, вернитеTrue
только в том случае, если эта запись является файлом (без следующих символических ссылок); вернитеFalse
, если запись является каталогом или другой записью, не относящейся к файлу, или если это не так. больше не существую.Результат кэшируется в объекте
os.DirEntry
. Кэширование, системные вызовы и возникающие исключения выполняются в соответствии сis_dir()
.
- is_symlink()¶
Возвращает
True
, если эта запись является символьной ссылкой (даже если она не работает); возвращаетFalse
, если запись указывает на каталог или какой-либо файл, или если он больше не существует.Результат кэшируется в объекте
os.DirEntry
. Вызовитеos.path.islink()
для получения актуальной информации.При первом, некэшированном вызове, системный вызов в большинстве случаев не требуется. В частности, ни Windows, ни Unix не требуют системного вызова, за исключением некоторых файловых систем Unix, таких как сетевые файловые системы, которые возвращают
dirent.d_type == DT_UNKNOWN
.Этот метод может вызвать
OSError
, напримерPermissionError
, ноFileNotFoundError
перехватывается и не вызывается.
- stat(*, follow_symlinks=True)¶
Возвращает объект
stat_result
для этой записи. По умолчанию этот метод использует символьные ссылки; чтобы указать символьную ссылку, добавьте аргумент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)¶
Получите статус файла или файлового дескриптора. Выполните эквивалент системного вызова a
stat()
по заданному пути. путь может быть указан в виде строки или байтов - прямо или косвенно через интерфейсPathLike
- или в виде открытого файлового дескриптора. Возвращает объектstat_result
.Эта функция обычно следует за символическими ссылками; чтобы указать символическую ссылку, добавьте аргумент
follow_symlinks=False
или используйтеlstat()
.Эта функция может поддерживать specifying a file descriptor и not following symlinks.
В Windows передача
follow_symlinks=False
отключит отслеживание всех точек повторной обработки, заменяющих имена, включая символические ссылки и переходы между каталогами. Другие типы точек повторной обработки, которые не похожи на ссылки или которые операционная система не может отслеживать, будут открыты напрямую. При переходе по цепочке из нескольких ссылок это может привести к возврату исходной ссылки вместо не-ссылки, которая препятствовала полному обходу. Чтобы получить результаты состояния для конечного пути в этом случае, используйте функциюos.path.realpath()
для определения имени пути, насколько это возможно, и вызовитеlstat()
для получения результата. Это не относится к висячим символическим ссылкам или точкам соединения, которые вызывают обычные исключения.Пример:
>>> import os >>> statinfo = os.stat('somefile.txt') >>> statinfo os.stat_result(st_mode=33188, st_ino=7876932, st_dev=234881026, st_nlink=1, st_uid=501, st_gid=501, st_size=264, st_atime=1297230295, st_mtime=1297230027, st_ctime=1297230027) >>> statinfo.st_size 264
Изменено в версии 3.3: Добавлены параметры dir_fd и follow_symlinks, указывающие файловый дескриптор вместо пути.
Изменено в версии 3.6: Принимает значение 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¶
Время последнего доступа, выраженное целым числом в наносекундах.
Добавлено в версии 3.3.
- st_mtime_ns¶
Время последнего изменения содержимого, выраженное целым числом в наносекундах.
Добавлено в версии 3.3.
- st_ctime_ns¶
Зависит от платформы:
время последнего изменения метаданных в Unix,
время создания в Windows, выраженное в наносекундах в виде целого числа.
Добавлено в версии 3.3.
Примечание
Точное значение и разрешение атрибутов
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¶
Тип устройства, если это устройство с индексным узлом.
- 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.FILE_ATTRIBUTE_ARCHIVE>
в модулеstat
.Добавлено в версии 3.5.
- st_reparse_tag¶
Если для параметра
st_file_attributes
задано значениеFILE_ATTRIBUTE_REPARSE_POINT
, это поле содержит тег, определяющий тип точки повторного анализа. Смотрите константыIO_REPARSE_TAG_*
в модулеstat
.
Стандартный модуль
stat
определяет функции и константы, которые полезны для извлечения информации из структурыstat
. (В Windows некоторые элементы заполнены фиктивными значениями.)Для обеспечения обратной совместимости экземпляр
stat_result
также доступен в виде кортежа, состоящего как минимум из 10 целых чисел, содержащих наиболее важные (и переносимые) элементы структурыstat
, в порядкеst_mode
,st_ino
,st_dev
,st_nlink
,st_uid
,st_gid
,st_size
,st_atime
,st_mtime
,st_ctime
. В некоторых реализациях в конце может быть добавлено больше элементов. Для совместимости со старыми версиями Python обращение кstat_result
в качестве кортежа всегда возвращает целые числа.Изменено в версии 3.5: Windows теперь возвращает файловый индекс как
st_ino
, когда он доступен.Изменено в версии 3.7: Добавлен элемент
st_fstype
в Solaris/производные.Изменено в версии 3.8: Добавлен элемент
st_reparse_tag
в Windows.Изменено в версии 3.8: В Windows элемент
st_mode
теперь идентифицирует специальные файлы какS_IFCHR
,S_IFIFO
илиS_IFBLK
соответственно.
- os.statvfs(path)¶
Выполните системный вызов a
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
(разрешает принудительную блокировку FS),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.
Эта функция ограничена в Emscripten, и была ли она доступна, смотрите в Платформы веб-сборки для получения дополнительной информации.
Изменено в версии 3.2: Добавлена поддержка символьных ссылок для Windows 6.0 (Vista).
Изменено в версии 3.3: Добавлен параметр dir_fd, и теперь он разрешает target_is_directory на платформах, отличных от Windows.
Изменено в версии 3.6: Принимает значение path-like object для src и летнего времени.
Изменено в версии 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. Они определяют время, установленное в path, и используются следующим образом:Если указано значение ns, оно должно состоять из 2 кортежей вида
(atime_ns, mtime_ns)
, где каждый элемент представляет собой число int, выражающее наносекунды.Если times не равно
None
, то это должен быть 2-й кортеж вида(atime, mtime)
, где каждый элемент представляет собой число int или число с плавающей точкой, выражающее секунды.Если значение times равно
None
, а значение ns не указано, это эквивалентно указаниюns=(atime_ns, mtime_ns)
, где оба значения являются текущим временем.
Указание кортежей как для times, так и для ns является ошибкой.
Обратите внимание, что точное время, указанное вами здесь, может не быть возвращено при последующем вызове
stat()
, в зависимости от разрешения, с которым ваша операционная система регистрирует время доступа и изменения; см.stat()
. Лучший способ сохранить точное время - использовать поля st_atime_ns и st_mtime_ns из объектаos.stat()
result с параметром 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
, не влияет на поведение перехода, поскольку в режиме «снизу вверх» каталоги в dirnames генерируются до того, как будет сгенерирован сам dirpath.По умолчанию ошибки при вызове
scandir()
игнорируются. Если указан необязательный аргумент onerror, то это должна быть функция; она будет вызываться с одним аргументом, экземпляромOSError
. Он может сообщить об ошибке, чтобы продолжить проверку, или вызвать исключение, чтобы прервать проверку. Обратите внимание, что имя файла доступно как атрибутfilename
объекта exception.По умолчанию
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_*
, доступных в системе (или их побитовой комбинацией). По умолчанию новый файловый дескриптор равен 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])¶
Создайте и верните файловый дескриптор события. Файловые дескрипторы поддерживают raw
read()
иwrite()
с размером буфера, равным 8,select()
,poll()
и аналогичным. Смотрите справочную страницу eventfd(2) для получения дополнительной информации. По умолчанию новый файловый дескриптор равен non-inheritable.initval - это начальное значение счетчика событий. Начальное значение должно быть 32-разрядным целым числом без знака. Пожалуйста, обратите внимание, что начальное значение ограничено 32-разрядным значением unsigned 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: Linux >= 2.6.27
Добавлено в версии 3.10.
- os.eventfd_write(fd, value)¶
Добавьте значение к файловому дескриптору
eventfd()
. значение должно быть 64-разрядным значением int без знака. Функция не проверяет, является ли fd значениемeventfd()
.Availability: Linux >= 2.6.27
Добавлено в версии 3.10.
- os.EFD_CLOEXEC¶
Установите флаг close-on-exec для нового файлового дескриптора
eventfd()
.Availability: Linux >= 2.6.27
Добавлено в версии 3.10.
- os.EFD_NONBLOCK¶
Установите флаг состояния
O_NONBLOCK
для нового файлового дескриптораeventfd()
.Availability: Linux >= 2.6.27
Добавлено в версии 3.10.
- os.EFD_SEMAPHORE¶
Обеспечьте семантику, подобную семафору, для чтения из файлового дескриптора
eventfd()
. При чтении внутренний счетчик уменьшается на единицу.Availability: Linux >= 2.6.30
Добавлено в версии 3.10.
Расширенные атрибуты Linux¶
Добавлено в версии 3.3.
Все эти функции доступны только в Linux.
- os.getxattr(path, attribute, *, follow_symlinks=True)¶
Возвращает значение расширенного атрибута файловой системы attribute для path. атрибутом могут быть байты или str (прямо или косвенно через интерфейс
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. Атрибуты в списке представлены в виде строк, декодированных в соответствии с кодировкой файловой системы. Если путь равен
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. Атрибутом * должны быть байты или str (прямо или косвенно через интерфейс
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 значение*. атрибут должен представлять собой байт или строку str без встроенных нулей (прямо или косвенно через интерфейс
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*
принимают список аргументов для новой программы, загруженной в процесс. В каждом случае первый из этих аргументов передается новой программе как ее собственное имя, а не как аргумент, который пользователь мог ввести в командной строке. Для программиста на C это argv[0]
, передаваемый в код программы main()
. Например, os.execv('/bin/echo', ['foo', 'bar'])
будет выводиться только bar
при стандартном выводе; foo
будет игнорироваться.
- os.abort()¶
Сгенерируйте сигнал
SIGABRT
для текущего процесса. В Unix по умолчанию создается дамп ядра; в Windows процесс немедленно возвращает код завершения, равный3
. Имейте в виду, что вызов этой функции не вызовет обработчик сигналов Python, зарегистрированный дляSIGABRT
с помощьюsignal.signal()
.
- os.add_dll_directory(path)¶
Добавьте путь к пути поиска библиотеки DLL.
Этот путь поиска используется при разрешении зависимостей для импортированных модулей расширения (сам модуль разрешен с помощью
sys.path
), а также с помощьюctypes
.Удалите каталог, вызвав функцию close() для возвращаемого объекта или используя ее в инструкции
with
.Смотрите раздел Microsoft documentation для получения дополнительной информации о том, как загружаются библиотеки DLL.
Создает auditing event
os.add_dll_directory
с аргументомpath
.Availability: Окна.
Добавлено в версии 3.8: Предыдущие версии Python разрешали библиотеки 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. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды, но это не обязательно.Варианты, которые содержат букву «р» в конце (
execlp()
,execlpe()
,execvp()
, иexecvpe()
), будут использовать переменную окруженияPATH
для определения местоположения файла программы program . При замене среды (с использованием одного из вариантов :func:`exec*e <execl>`, рассмотренных в следующем параграфе) новая среда используется в качестве источника переменной :envvar:`PATH`. Другие варианты, :func:`execl`, :func:`execle`, :func:`execv`, и :func:`execve` не будут использовать переменную :envvar:`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, не Emscripten, не БЫЛ я.
Изменено в версии 3.3: Добавлена поддержка указания path в качестве дескриптора открытого файла для
execve()
.Изменено в версии 3.6: Принимает значение path-like object.
- os._exit(n)¶
Завершите процесс со статусом n, не вызывая обработчиков очистки, не очищая буферы stdio и т.д.
Примечание
Стандартный способ завершения
sys.exit(n)
._exit()
обычно должен использоваться в дочернем процессе только послеfork()
.
Следующие коды завершения определены и могут использоваться с _exit()
, хотя они и не обязательны. Обычно они используются для системных программ, написанных на Python, таких как программа доставки внешних команд почтового сервера.
Примечание
Некоторые из них могут быть доступны не на всех платформах Unix, поскольку существуют некоторые различия. Эти константы определяются там, где они определены базовой платформой.
- os.EX_OK¶
Код завершения, означающий, что ошибка не произошла. Может быть взят из определенного значения
EXIT_SUCCESS
на некоторых платформах. Обычно имеет нулевое значение.Availability: Unix, Windows.
- os.EX_USAGE¶
Код завершения, означающий, что команда была использована неправильно, например, при вводе неправильного количества аргументов.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_DATAERR¶
Код выхода, означающий, что введенные данные были неверными.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_NOINPUT¶
Код завершения, означающий, что входной файл не существовал или был недоступен для чтения.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_NOUSER¶
Код выхода, означающий, что указанный пользователь не существовал.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_NOHOST¶
Код завершения, означающий, что указанный хост не существует.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_UNAVAILABLE¶
Код выхода, означающий, что требуемая услуга недоступна.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_SOFTWARE¶
Код выхода, означающий, что была обнаружена внутренняя программная ошибка.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_OSERR¶
Код завершения, означающий, что была обнаружена ошибка операционной системы, например, невозможность выполнения форка или создания канала.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_OSFILE¶
Код завершения, означающий, что какой-либо системный файл не существует, не может быть открыт или произошла какая-либо другая ошибка.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_CANTCREAT¶
Код завершения, означающий, что указанный пользователем выходной файл не может быть создан.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_IOERR¶
Код завершения, означающий, что при выполнении ввода-вывода с каким-либо файлом произошла ошибка.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_TEMPFAIL¶
Код завершения, означающий, что произошел временный сбой. Это указывает на то, что на самом деле может и не быть ошибкой, например, на невозможность подключения к сети во время операции, которую можно повторить.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_PROTOCOL¶
Код завершения, означающий, что обмен протоколами был незаконным, недействительным или непонятным.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_NOPERM¶
Код завершения, означающий, что для выполнения операции было недостаточно разрешений (но не предназначенный для устранения проблем с файловой системой).
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_CONFIG¶
Код завершения, означающий, что произошла какая-то ошибка конфигурации.
Availability: Unix, не Emscripten, не БЫЛ I.
- os.EX_NOTFOUND¶
Код выхода, который означает что-то вроде «запись не найдена».
Availability: Unix, не Emscripten, не БЫЛ I.
- os.fork()¶
Разветвление дочернего процесса. Возвращает
0
в дочернем и идентификатор дочернего процесса в родительском. При возникновении ошибки генерируетсяOSError
.Обратите внимание, что некоторые платформы, включая FreeBSD <= 6.3 и Cygwin, имеют известные проблемы при использовании
fork()
из потока.Выдает auditing event
os.fork
без каких-либо аргументов.Предупреждение
В macOS использование этой функции небезопасно в сочетании с использованием системных API более высокого уровня, включая использование
urllib.request
.Изменено в версии 3.8: Вызов
fork()
во вспомогательном интерпретаторе больше не поддерживается (вызываетсяRuntimeError
).Предупреждение
Смотрите
ssl
для приложений, использующих SSL-модуль с функцией fork().Availability: Unix, не Emscripten, не БЫЛ I.
- os.forkpty()¶
Разветвите дочерний процесс, используя новый псевдотерминал в качестве управляющего терминала дочернего процесса. Возвращает пару
(pid, fd)
, где pid - это0
в дочернем элементе, идентификатор процесса нового дочернего элемента в родительском, а fd - файловый дескриптор главного конца псевдотерминала. Для более удобного использования используйте модульpty
. При возникновении ошибки возникает сообщениеOSError
.Выдает auditing event
os.forkpty
без каких-либо аргументов.Предупреждение
В macOS использование этой функции небезопасно в сочетании с использованием системных API более высокого уровня, включая использование
urllib.request
.Изменено в версии 3.8: Вызов
forkpty()
во вспомогательном интерпретаторе больше не поддерживается (вызываетсяRuntimeError
).Availability: Unix, не Emscripten, не БЫЛ I.
- os.kill(pid, sig, /)¶
Отправьте сигнал sig процессу pid. Константы для конкретных сигналов, доступных на хост-платформе, определены в модуле
signal
.Windows: Сигналы
signal.CTRL_C_EVENT
иsignal.CTRL_BREAK_EVENT
являются специальными сигналами, которые могут быть отправлены только консольным процессам, которые совместно используют общее окно консоли, например, некоторым подпроцессам. Любое другое значение для sig приведет к безусловному завершению процесса API-интерфейсом TerminateProcess, и код завершения будет установлен в sig. В Windows-версииkill()
дополнительно используются дескрипторы процесса для завершения.Смотрите также
signal.pthread_kill()
.Создает auditing event
os.kill
с аргументамиpid
,sig
.Availability: Unix, Windows, не Emscripten, не БЫЛ я.
Изменено в версии 3.2: Добавлена поддержка Windows.
- os.killpg(pgid, sig, /)¶
Отправьте сигнал sig в группу процессов pgid.
Создает auditing event
os.killpg
с аргументамиpgid
,sig
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.nice(increment, /)¶
Добавьте приращение к «приятности» процесса. Верните новую приятность.
Availability: Unix, не Emscripten, не БЫЛ I.
- 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, не Emscripten, не БЫЛ I.
- 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
; смотрите документацию по этому классу для получения более эффективных способов управления подпроцессами и взаимодействия с ними.Availability: это не Emscripten, это был не я.
Примечание
Python UTF-8 Mode влияет на кодировки, используемые для cmd и содержимого канала.
popen()
является простой оболочкой дляsubprocess.Popen
. Используйтеsubprocess.Popen
илиsubprocess.run()
для управления такими параметрами, как кодировки.
- 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 может быть последовательностью кортежей, описывающих действия, выполняемые с определенными файловыми дескрипторами в дочернем процессе между шагами реализации библиотеки C
fork()
иexec()
. Первым элементом в каждом кортеже должен быть один из трех перечисленных ниже индикаторов типа, описывающих остальные элементы кортежа:- os.POSIX_SPAWN_OPEN¶
(
os.POSIX_SPAWN_OPEN
, * fd*, путь, флаги, режим)Выполняет
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)
.
Эти кортежи соответствуют библиотеке C
posix_spawn_file_actions_addopen()
,posix_spawn_file_actions_addclose()
иposix_spawn_file_actions_adddup2()
Вызовам API, используемым для подготовки к самому вызовуposix_spawn()
.Аргумент setpgroup установит для дочерней группы процессов указанное значение. Если указанное значение равно 0, идентификатор дочерней группы процессов будет таким же, как и его идентификатор процесса. Если значение 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
вместо политики планировщика указывает на то, что оно не предоставляется. Этот аргумент представляет собой комбинацию флагов библиотеки CPOSIX_SPAWN_SETSCHEDPARAM
иPOSIX_SPAWN_SETSCHEDULER
.Создает auditing event
os.posix_spawn
с аргументамиpath
,argv
,env
.Добавлено в версии 3.8.
Availability: Unix, не Emscripten, не БЫЛ I.
- 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, а не Emscripten, это был не я.
Смотрите документацию
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, не Emscripten, не БЫЛ I.
Добавлено в версии 3.7.
- os.spawnl(mode, path, ...)¶
- os.spawnle(mode, path, ..., env)¶
- os.spawnlp(mode, file, ...)¶
- os.spawnlpe(mode, file, ..., env)¶
- os.spawnv(mode, path, args)¶
- os.spawnve(mode, path, args, env)¶
- os.spawnvp(mode, file, args)¶
- os.spawnvpe(mode, file, args, env)¶
Запустите программу path в новом процессе.
(Обратите внимание, что модуль
subprocess
предоставляет более мощные средства для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее, чем использование этих функций. Обратите особое внимание на раздел Замена старых функций модулем subprocess.)Если значение mode равно
P_NOWAIT
, эта функция возвращает идентификатор нового процесса; если значение mode равноP_WAIT
, возвращает код завершения процесса, если он завершается нормально, или-signal
, где сигнал - это сигнал, который остановил процесс. В Windows идентификатор процесса фактически является дескриптором процесса, поэтому его можно использовать с функциейwaitpid()
.Обратите внимание, что в VxWorks эта функция не возвращает
-signal
при завершении нового процесса. Вместо этого она вызывает исключение OSError.Варианты «l» и «v» функций
spawn*
отличаются способом передачи аргументов командной строки. С вариантами «l», пожалуй, проще всего работать, если количество параметров фиксировано при написании кода; отдельные параметры просто становятся дополнительными параметрами для функцийspawnl*()
. Варианты «v» хороши, когда количество параметров является переменным, а аргументы передаются в виде списка или кортежа в качестве параметра args. В любом случае аргументы дочернего процесса должны начинаться с имени выполняемой команды.В вариантах, которые содержат вторую букву «р» в конце (
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, не Emscripten, не БЫЛ я.
spawnlp()
,spawnlpe()
,spawnvp()
иspawnvpe()
недоступны в Windows.spawnle()
иspawnve()
не являются потокобезопасными в Windows; мы рекомендуем вам использовать вместо них модульsubprocess
.Изменено в версии 3.6: Принимает значение path-like object.
- os.P_NOWAIT¶
- os.P_NOWAITO¶
Возможные значения параметра mode для семейства функций
spawn*
. Если указано любое из этих значений, функцииspawn*
вернут значение, как только будет создан новый процесс, с идентификатором процесса в качестве возвращаемого значения.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: Окна.
- 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: Окна.
Изменено в версии 3.10: Добавлены аргументы arguments, cwd и show_cmd, а также событие аудита
os.startfile/2
.
- os.system(command)¶
Выполните команду (строку) в подоболочке. Это реализуется путем вызова стандартной функции C
system()
и имеет те же ограничения. Изменения вsys.stdin
и т.д. не отражаются на среде выполнения команды. Если command генерирует какой-либо вывод, он будет отправлен в стандартный поток вывода интерпретатора. Стандарт C не определяет значение возвращаемого значения функции C, поэтому возвращаемое значение функции Python зависит от системы.В Unix возвращаемое значение - это статус завершения процесса, закодированный в формате, указанном для
wait()
.В Windows возвращаемое значение равно тому, которое возвращается системной оболочкой после выполнения command. Оболочка задается переменной среды Windows
COMSPEC
: обычно это cmd.exe, которая возвращает статус завершения выполнения команды; в системах, использующих неродную оболочку, обратитесь к документации по оболочке.Модуль
subprocess
предоставляет более мощные возможности для запуска новых процессов и получения их результатов; использование этого модуля предпочтительнее использования этой функции. Некоторые полезные рецепты приведены в разделе Замена старых функций модулем subprocess документацииsubprocess
.В Unix
waitstatus_to_exitcode()
может использоваться для преобразования результата (статуса завершения) в код завершения. В Windows результатом является непосредственно код завершения.Создает auditing event
os.system
с аргументомcommand
.Availability: Unix, Windows, не Emscripten, не БЫЛ я.
- 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-разрядное число, младший байт которого - это номер сигнала, завершившего процесс, а старший байт - статус завершения (если номер сигнала равен нулю); старший бит исходного кода. младший байт устанавливается, если был создан основной файл.
Если нет дочерних элементов, которых можно было бы ожидать, вводится значение
ChildProcessError
.waitstatus_to_exitcode()
может использоваться для преобразования статуса выхода в код выхода.Availability: Unix, не Emscripten, не БЫЛ I.
См.также
Другие функции
wait*()
, описанные ниже, могут использоваться для ожидания завершения определенного дочернего процесса и имеют больше возможностей.waitpid()
- единственная функция, которая также доступна в Windows.
- os.waitid(idtype, id, options, /)¶
Дождитесь завершения дочернего процесса.
idtype может быть
P_PID
,P_PGID
,P_ALL
, или (в Linux)P_PIDFD
. От этого зависит интерпретация id; смотрите их индивидуальные описания.опции - это комбинация флагов ИЛИ. Требуется по крайней мере один из флагов
WEXITED
,WSTOPPED
илиWCONTINUED
;WNOHANG
иWNOWAIT
являются дополнительными необязательными флагами.Возвращаемое значение - это объект, представляющий данные, содержащиеся в структуре
siginfo_t
со следующими атрибутами:si_pid
(идентификатор процесса)si_uid
(реальный идентификатор пользователя дочернего устройства)si_signo
(всегдаSIGCHLD
)si_status
(статус выхода или номер сигнала, в зависимости отsi_code
)si_code
(возможные значения приведены в разделеCLD_EXITED
)
Если указано значение
WNOHANG
и в запрошенном состоянии нет подходящих дочерних элементов, возвращается значениеNone
. В противном случае, если нет подходящих дочерних элементов, которых можно было бы ожидать, вызывается значениеChildProcessError
.Availability: Unix, не Emscripten, не БЫЛ I.
Примечание
Эта функция недоступна в Mac OS.
Добавлено в версии 3.3.
- os.waitpid(pid, options, /)¶
Детали этой функции различаются в Unix и Windows.
В Unix: Дождитесь завершения дочернего процесса, заданного идентификатором процесса pid, и верните кортеж, содержащий его идентификатор процесса и указание статуса завершения (закодированный как
wait()
). На семантику вызова влияет значение целого числа options, которое должно быть0
для нормальной работы.Если pid больше, чем
0
,waitpid()
запрашивает информацию о состоянии для этого конкретного процесса. Если значение pid равно0
, запрос относится к статусу любого дочернего процесса в группе процессов текущего процесса. Если значение pid равно-1
, запрос относится к любому дочернему процессу текущего процесса. Если значение pid меньше-1
, запрашивается статус для любого процесса в группе процессов-pid
(абсолютное значение pid).options - это комбинация флагов ИЛИ. Если он содержит
WNOHANG
и в запрошенном состоянии нет соответствующих дочерних элементов, возвращается(0, 0)
. В противном случае, если нет подходящих дочерних элементов, которых можно было бы ожидать, вызываетсяChildProcessError
. Можно использовать и другие варианты:WUNTRACED
иWCONTINUED
.В Windows: дождитесь завершения процесса, заданного дескриптором процесса pid, и верните кортеж, содержащий pid, а его статус завершения сдвинут влево на 8 бит (сдвиг упрощает кроссплатформенное использование функции). Значение pid, меньшее или равное
0
, не имеет особого значения в Windows и вызывает исключение. Значение integer options не имеет значения. pid может относиться к любому процессу, идентификатор которого известен, не обязательно к дочернему процессу. Функцииspawn*
, вызываемые с помощьюP_NOWAIT
, возвращают подходящие дескрипторы процесса.waitstatus_to_exitcode()
может использоваться для преобразования статуса выхода в код выхода.Availability: Unix, Windows, не Emscripten, не БЫЛ я.
Изменено в версии 3.5: Если системный вызов прерывается и обработчик сигнала не вызывает исключение, функция теперь повторяет системный вызов вместо того, чтобы вызывать исключение
InterruptedError
(объяснение смотрите в PEP 475).
- os.wait3(options)¶
Аналогично
waitpid()
, за исключением того, что аргумент process id не задается и возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, указание статуса завершения и информацию об использовании ресурсов. Подробные сведения об использовании ресурсов приведены вresource.getrusage()
. Аргумент options такой же, как и дляwaitpid()
иwait4()
.waitstatus_to_exitcode()
может использоваться для преобразования статуса выхода в код выхода.Availability: Unix, не Emscripten, не БЫЛ I.
- os.wait4(pid, options)¶
Аналогично
waitpid()
, за исключением того, что возвращается кортеж из 3 элементов, содержащий идентификатор дочернего процесса, указание статуса завершения и информацию об использовании ресурсов. Подробные сведения об использовании ресурсов приведены вresource.getrusage()
. Аргументы дляwait4()
те же, что и дляwaitpid()
.waitstatus_to_exitcode()
может использоваться для преобразования статуса выхода в код выхода.Availability: Unix, не Emscripten, не БЫЛ I.
- os.P_PID¶
- os.P_PGID¶
- os.P_ALL¶
- os.P_PIDFD¶
Это возможные значения для idtype в
waitid()
. Они влияют на интерпретацию id:P_PID
- дождитесь дочернего элемента, чей PID равен id.P_PGID
- дождитесь любого дочернего элемента, чей идентификатор группы прогресса равен id.P_ALL
- ожидание любого дочернего элемента; id игнорируется.P_PIDFD
- дождитесь дочернего элемента, идентифицированного файловым дескриптором id (файловый дескриптор процесса, созданный с помощьюpidfd_open()
).
Availability: Unix, не Emscripten, не БЫЛ I.
Примечание
P_PIDFD
доступно только в Linux >= 5.4.Добавлено в версии 3.3.
Добавлено в версии 3.9: Константа
P_PIDFD
.
- os.WCONTINUED¶
Этот флажок options для
waitpid()
,wait3()
,wait4()
, иwaitid()
приводит к тому, что дочерние процессы будут отображаться в отчетах, если они были продолжены после остановки управления заданиями с момента последнего сообщения о них.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WEXITED¶
Этот флаг options для
waitid()
приводит к появлению отчетов о дочерних процессах, которые завершились.Другие функции
wait*
всегда сообщают о дочерних функциях, которые завершили работу, поэтому для них эта опция недоступна.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.WSTOPPED¶
Этот флаг options для
waitid()
приводит к тому, что дочерние процессы, которые были остановлены при подаче сигнала, будут отображаться в отчете.Эта опция недоступна для других функций
wait*
.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
- os.WUNTRACED¶
Этот флажок options для
waitpid()
,wait3()
, иwait4()
приводит к тому, что дочерние процессы также будут отображаться, если они были остановлены, но об их текущем состоянии не сообщалось с момента их остановки.Эта опция недоступна для
waitid()
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WNOHANG¶
Этот флаг options вызывает немедленный возврат
waitpid()
,wait3()
,wait4()
, иwaitid()
, если статус дочернего процесса недоступен немедленно.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WNOWAIT¶
Этот флаг options приводит к тому, что
waitid()
дочерний элемент остается в состоянии ожидания, так что более поздний вызовwait*()
может быть использован для повторного получения информации о статусе дочернего элемента.Эта опция недоступна для других функций
wait*
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.CLD_EXITED¶
- os.CLD_KILLED¶
- os.CLD_DUMPED¶
- os.CLD_TRAPPED¶
- os.CLD_STOPPED¶
- os.CLD_CONTINUED¶
Это возможные значения для
si_code
в результате, возвращаемомwaitid()
.Availability: Unix, не Emscripten, не БЫЛ I.
Добавлено в версии 3.3.
Изменено в версии 3.9: Добавлены значения
CLD_KILLED
иCLD_STOPPED
.
- os.waitstatus_to_exitcode(status)¶
Преобразуйте статус ожидания в код выхода.
В Unix:
Если процесс завершился нормально (если значение
WIFEXITED(status)
равно true), верните статус завершения процесса (вернитеWEXITSTATUS(status)
): результат больше или равен 0.Если процесс был прерван сигналом (если
WIFSIGNALED(status)
равно true), верните-signum
, где signum - номер сигнала, который вызвал завершение процесса (верните-WTERMSIG(status)
): результат меньше 0.В противном случае поднимите значение
ValueError
.
В Windows верните значение status, сдвинутое вправо на 8 бит.
В Unix, если процесс отслеживается или если
waitpid()
был вызван с параметромWUNTRACED
, вызывающий должен сначала проверить, имеет ли значениеWIFSTOPPED(status)
значение true. Эта функция не должна вызываться, еслиWIFSTOPPED(status)
имеет значение true.См.также
WIFEXITED()
,WEXITSTATUS()
,WIFSIGNALED()
,WTERMSIG()
,WIFSTOPPED()
,WSTOPSIG()
функции.Availability: Unix, Windows, не Emscripten, не БЫЛ я.
Добавлено в версии 3.9.
Следующие функции принимают в качестве параметра код состояния процесса, возвращаемый с помощью system()
, wait()
, или waitpid()
. Они могут использоваться для определения состояния процесса.
- os.WCOREDUMP(status, /)¶
Возвращает
True
, если для процесса был сгенерирован дамп ядра, в противном случае возвращаетFalse
.Эту функцию следует использовать только в том случае, если
WIFSIGNALED()
имеет значение true.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WIFCONTINUED(status)¶
Верните
True
, если остановленный дочерний элемент был возобновлен с помощьюSIGCONT
(если процесс был продолжен с момента остановки управления заданием), в противном случае вернитеFalse
.Смотрите параметр
WCONTINUED
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WIFSTOPPED(status)¶
Верните
True
, если процесс был остановлен подачей сигнала, в противном случае вернитеFalse
.WIFSTOPPED()
возвращаетTrue
только в том случае, если вызовwaitpid()
был выполнен с использованием опцииWUNTRACED
или когда процесс отслеживается (см. ptrace(2)).Availability: Unix, не Emscripten, не БЫЛ I.
- os.WIFSIGNALED(status)¶
Верните
True
, если процесс был прерван сигналом, в противном случае вернитеFalse
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WIFEXITED(status)¶
Возвращает
True
, если процесс завершился нормально, то есть путем вызоваexit()
или_exit()
, или путем возврата изmain()
; в противном случае возвращаетFalse
.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WEXITSTATUS(status)¶
Верните статус завершения процесса.
Эту функцию следует использовать только в том случае, если
WIFEXITED()
имеет значение true.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WSTOPSIG(status)¶
Возвращает сигнал, который вызвал остановку процесса.
Эту функцию следует использовать только в том случае, если
WIFSTOPPED()
имеет значение true.Availability: Unix, не Emscripten, не БЫЛ I.
- os.WTERMSIG(status)¶
Возвращает номер сигнала, который привел к завершению процесса.
Эту функцию следует использовать только в том случае, если
WIFSIGNALED()
имеет значение true.Availability: Unix, не Emscripten, не БЫЛ I.
Интерфейс к планировщику¶
Эти функции управляют тем, как операционная система распределяет процессорное время для процесса. Они доступны только на некоторых платформах Unix. Для получения более подробной информации обратитесь к страницам руководства по Unix.
Добавлено в версии 3.3.
Следующие политики планирования доступны, если они поддерживаются операционной системой.
- os.SCHED_OTHER¶
Политика планирования по умолчанию.
- os.SCHED_BATCH¶
Политика планирования для процессов, интенсивно использующих центральный процессор, которая пытается сохранить интерактивность на остальной части компьютера.
- os.SCHED_IDLE¶
Политика планирования фоновых задач с крайне низким приоритетом.
- os.SCHED_SPORADIC¶
Политика планирования для спорадических серверных программ.
- os.SCHED_FIFO¶
Политика планирования «Первый пришел - первый вышел».
- os.SCHED_RR¶
Политика циклического планирования.
- os.SCHED_RESET_ON_FORK¶
Этот флаг может быть установлен совместно с любой другой политикой планирования. Когда процесс с установленным этим флагом разветвляется, политика планирования и приоритет его дочернего процесса устанавливаются на значения по умолчанию.
- class os.sched_param(sched_priority)¶
Этот класс представляет настраиваемые параметры планирования, используемые в
sched_setparam()
,sched_setscheduler()
, иsched_getparam()
. Он неизменяем.На данный момент существует только один возможный параметр:
- sched_priority¶
Приоритет планирования для политики планирования.
- os.sched_get_priority_min(policy)¶
Получите минимальное значение приоритета для policy. policy - это одна из констант политики планирования, приведенных выше.
- os.sched_get_priority_max(policy)¶
Получите максимальное значение приоритета для policy. policy - это одна из констант политики планирования, приведенных выше.
- os.sched_setscheduler(pid, policy, param, /)¶
Задайте политику планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. policy - это одна из констант политики планирования, приведенных выше. param - это
sched_param
экземпляр.
- os.sched_getscheduler(pid, /)¶
Возвращает политику планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. Результатом является одна из констант политики планирования, приведенных выше.
- os.sched_setparam(pid, param, /)¶
Задайте параметры планирования для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс. param - это
sched_param
экземпляр.
- os.sched_getparam(pid, /)¶
Возвращает параметры планирования в виде экземпляра
sched_param
для процесса с PID pid. Значение pid, равное 0, означает вызывающий процесс.
- os.sched_rr_get_interval(pid, /)¶
Возвращает количество циклов в секундах для процесса с помощью PID pid. Значение pid, равное 0, означает вызывающий процесс.
- os.sched_yield()¶
Добровольно откажитесь от центрального процессора.
- os.sched_setaffinity(pid, mask, /)¶
Ограничьте процесс с помощью PID pid (или текущего процесса, если он равен нулю) набором процессоров. mask - это повторяемое число целых чисел, представляющее набор процессоров, которыми должен быть ограничен процесс.
- os.sched_getaffinity(pid, /)¶
Возвращает набор процессоров, на которые ограничен процесс с PID pid.
Если 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
, если значение не определено.Это число не эквивалентно количеству логических процессоров, которые может использовать текущий процесс.
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.
Изменено в версии 3.11: Добавьте
'SC_MINSIGSTKSZ'
имя.
Для поддержки операций манипулирования путями используются следующие значения данных. Они определены для всех платформ.
Операции более высокого уровня с путевыми именами определены в модуле 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, /)¶
Возвращает байтовую строку размера случайных байт, подходящую для криптографического использования.
Эта функция возвращает случайные байты из источника случайности, зависящего от операционной системы. Возвращаемые данные должны быть достаточно непредсказуемыми для криптографических приложений, хотя их точное качество зависит от реализации операционной системы.
В Linux, если доступен системный вызов
getrandom()
, он используется в режиме блокировки: блокируется до тех пор, пока не будет инициализирован системный пул случайной энтропии (ядро собирает 128 бит энтропии). Логическое обоснование приведено в PEP 524. В Linux функцияgetrandom()
может использоваться для получения случайных байт в неблокирующем режиме (с использованием флагаGRND_NONBLOCK
) или для опроса до тех пор, пока не будет инициализирован системный пул энтропии urandom.В Unix-подобной системе случайные байты считываются с устройства
/dev/urandom
. Если устройство/dev/urandom
недоступно или недоступно для чтения, возникает исключениеNotImplementedError
.В Windows он будет использовать
BCryptGenRandom()
.См.также
Модуль
secrets
предоставляет функции более высокого уровня. Простой в использовании интерфейс генератора случайных чисел, предоставляемый вашей платформой, смотрите в разделеrandom.SystemRandom
.Изменено в версии 3.5: В Linux 3.17 и более поздних версиях теперь используется системный вызов
getrandom()
, когда он доступен. В OpenBSD 5.6 и более поздних версиях теперь используется функция Cgetentropy()
. Эти функции позволяют избежать использования внутреннего файлового дескриптора.Изменено в версии 3.5.2: В Linux, если системный вызов
getrandom()
блокируется (пул энтропии urandom еще не инициализирован), вернитесь к чтению/dev/urandom
.Изменено в версии 3.6: В Linux
getrandom()
теперь используется в режиме блокировки для повышения безопасности.Изменено в версии 3.11: В Windows
BCryptGenRandom()
используется вместоCryptGenRandom()
, который является устаревшим.
- os.GRND_NONBLOCK¶
По умолчанию при чтении из
/dev/random
,getrandom()
блокируется, если нет доступных случайных байт, а при чтении из/dev/urandom
блокируется, если пул энтропии еще не был инициализирован.Если установлен флаг
GRND_NONBLOCK
, тоgetrandom()
в этих случаях не блокируется, а вместо этого немедленно повышаетсяBlockingIOError
.Добавлено в версии 3.6.
- os.GRND_RANDOM¶
Если этот бит установлен, то случайные байты извлекаются из пула
/dev/random
вместо пула/dev/urandom
.Добавлено в версии 3.6.