sys
— Системоспецифичные параметры и функции¶
Модуль обеспечивает доступ к некоторым переменным, используемый или поддерживаемым интерпретатор, и к функциям, которые тесно взаимодействуют с интерпретатор. Он всегда доступен.
-
sys.
abiflags
¶ В системах POSIX, где Python был построен со стандартным сценарием
configure
, он содержит флаги ABI, как указано в PEP 3149.Изменено в версии 3.8: Флаги по умолчанию стали пустым строка (
m
флаг для pymalloc был удален).Добавлено в версии 3.2.
-
sys.
addaudithook
(hook)¶ Добавить вызываемый hook в список активных хуки аудита для текущего интерпретатора.
Когда событие аудита инициируется функцией
sys.audit()
, каждый хук будет вызываться в том порядке, в котором он был добавлен, с именем события и кортежем аргументов. Первыми вызываются собственные хуки, добавленныеPySys_AddAuditHook()
, а затем хуки, добавленные в текущем интерпретаторе. Затем хуки могут регистрировать событие, вызывать исключение для прерывания операции или полностью завершать процесс.Вызов
sys.addaudithook()
сам вызовет событие аудита с именемsys.addaudithook
без аргументов. Если какие-либо существующие хуки вызывают исключение, производное отRuntimeError
, новый хук не будет добавлен, а исключение подавлено. В результате вызывающие не могут предполагать, что их хук был добавлен, если они не контролируют все существующие хуки.См. таблица событий аудита для всех событий, поднимемых CPython, и PEP 578 для обсуждения оригинального дизайна.
Добавлено в версии 3.8.
Изменено в версии 3.8.1: Исключения, полученные из
Exception
, но неRuntimeError
, больше не подавляются.Детали реализации CPython: Когда отслеживание включено (см.
settrace()
), Python хуки только прослежены, если у подлежащего выкупу есть член__cantrace__
, который установлен в истинный значение. В противном случае функции трассировки пропустят хук.
-
sys.
argv
¶ Список аргументов командной строки, переданных сценарию Python.
argv[0]
- имя сценария (операционная система зависит от того, полное это имя пути или нет). Если команда была выполнена с использованием опции-c
командной строки к интерпретатор,argv[0]
устанавливается в значение строка'-c'
. Если имя сценария не было передано Python интерпретатор,argv[0]
является пустым строка.Сведения о закольцовывании стандартного ввода или списка файлов в командной строке см. в модуле
fileinput
.Примечание
В Unix аргументы командной строки передаются байтами из ОС. Python декодирует их с помощью кодировка файловой системы и обработчик ошибки «surrogateescape». Когда вам нужны исходные байты, вы можете получить их по
[os.fsencode(arg) for arg in sys.argv]
.
-
sys.
audit
(event, *args)¶ Поднять событие аудита и запустить любые активные хуки аудита. event - это строка, идентифицирующая событие, а args может содержать необязательные аргументы с дополнительной информацией о событии. Количество и типы аргументов для данного события считаются общедоступным и стабильным API и не должны изменяться между выпусками.
Например, одно событие аудита называется
os.chdir
. Это событие имеет один аргумент под названием path, который будет содержать запрошенный новый рабочий каталог.sys.audit()
вызовет существующие хуки аудита, передав имя события и аргументы, и повторно вызовет первое исключение из любого обработчика. Как правило, если возникает исключение, его не следует обрабатывать, а процесс должен быть завершен как можно быстрее. Это позволяет реализациям хуков решать, как реагировать на определенные события: они могут просто зарегистрировать событие или прервать операцию, вызвав исключение.Хуки добавляются с помощью функций
sys.addaudithook()
илиPySys_AddAuditHook()
.Собственным эквивалентом этой функции является
PySys_Audit()
. Использование нативной функции является предпочтительным, когда это возможно.См. таблица событий аудита для всех событий, вызванных CPython.
Добавлено в версии 3.8.
-
sys.
base_exec_prefix
¶ Установить во время запуска Python перед запуском
site.py
в то же значение, что иexec_prefix
. Если не работать в виртуальная среда, значения останется прежним; еслиsite.py
обнаружит, что виртуальная среда используется, значенияprefix
иexec_prefix
будут изменены для указания на виртуальную среду, в то время какbase_prefix
иbase_exec_prefix
останутся указывающими на базовую Python установку (на основе которой была создана виртуальная среда).Добавлено в версии 3.3.
-
sys.
base_prefix
¶ Установить во время запуска Python перед запуском
site.py
в то же значение, что иprefix
. Если не работать в виртуальная среда, значения останется прежним; еслиsite.py
обнаружит, что виртуальная среда используется, значенияprefix
иexec_prefix
будут изменены для указания на виртуальную среду, в то время какbase_prefix
иbase_exec_prefix
останутся указывающими на базовую Python установку (на основе которой была создана виртуальная среда).Добавлено в версии 3.3.
-
sys.
byteorder
¶ Индикатор собственного порядка байтов. Это будет иметь значение
'big'
на платформах big-endian (старший байт первый), а'little'
на платформах little-endian (первый байт с наименьшей значимостью).
-
sys.
builtin_module_names
¶ Кортеж строки, дающий названия всех модулей, скомпилированных в этот Python интерпретатор. (Эта информация недоступна другим способом —
modules.keys()
перечисляет только импортированные модули.
-
sys.
call_tracing
(func, args)¶ Вызов
func(*args)
, в то время как трассировка включена. После этого состояние трассировки сохраняется и восстанавливается. Он предназначен для вызова из отладчика с контрольной точки для рекурсивной отладки некоторых других кодов.
-
sys.
copyright
¶ Строка, содержащий авторские права, относящиеся к Python интерпретатору.
-
sys.
_clear_type_cache
()¶ Очистить кэш внутреннего типа. Для ускорения поиска кэш и методов используемый тип атрибут. Использовать только функцию, чтобы удалить ненужные ссылки во время отладки утечки ссылок.
Эта функция должна быть используемый только для внутренних и специализированных целей.
-
sys.
_current_frames
()¶ Возвращает словарь, отображающий каждый идентификатор поток на самый верхний фрейм стека, активный в данный момент в этом поток во время вызова функции. Следует отметить, что функции в модуле
traceback
могут создавать стек вызовов с таким фрейм.Это наиболее полезно для отладки взаимоблокировки: эта функция не требует взаимоблокировки потоков, и такие стеки вызовов потоки замораживаются до тех пор, пока они остаются взаимоблокированными. фрейм, возвращенный для поток без взаимоблокировки, может не иметь отношения к текущей активности поток к моменту, когда вызывающий код проверяет фрейм.
Эта функция должна быть используемый только для внутренних и специализированных целей.
Raises an auditing event
sys._current_frames
with no arguments.
-
sys.
breakpointhook
()¶ Эта функция хук вызывается встроенными
breakpoint()
. По умолчанию он перенаправляет вас в отладчикpdb
, но может быть установлен в любую другую функцию, чтобы вы могли выбрать, какой отладчик получит используемый.Сигнатура этой функции зависит от того, что она называет. Например, биндинг по умолчанию (например,
pdb.set_trace()
) не ожидает аргументов, но его можно связать с функцией, которая ожидает дополнительных аргументов (позиционных и/или ключевой). Встроенная функцияbreakpoint()
проходит свой*args
и**kws
прямо. Независимо от того, чтоbreakpointhooks()
возвращает - возвращенный отbreakpoint()
.Реализация по умолчанию сначала обращается к переменной среды
PYTHONBREAKPOINT
. Если установлено значение"0"
, то эта функция возвращает немедленно; то есть это no-op. Если переменная среды не задана или имеет пустое строка, вызываетсяpdb.set_trace()
. Иначе эта переменная должна назвать функцию, чтобы бежать, используя номенклатуру пунктирного импорта Python’а, например,package.subpackage.module.function
. В этом случаеpackage.subpackage.module
будет импортирован, и результирующий модуль должен иметь вызываемыйfunction()
. Это выполняется, передавая*args
и**kws
, и что бы ниfunction()
возвращает,sys.breakpointhook()
возвращает встроенной функцииbreakpoint()
.Обратите внимание, что если при импорте вызываемого объекта с именем
PYTHONBREAKPOINT
происходит что-то не так, сообщается оRuntimeWarning
и точка останова игнорируется.Также следует отметить, что если
sys.breakpointhook()
переопределяется программным путем,PYTHONBREAKPOINT
не консультируется.Добавлено в версии 3.7.
-
sys.
_debugmallocstats
()¶ Распечатайте низкоуровневое stderr информацию о состояние устройства распределения памяти CPython.
Если Python настроен –with-pydebug, он также выполняет некоторые дорогостоящие внутренние проверки непротиворечивости.
Добавлено в версии 3.3.
Детали реализации CPython: Эта функция специфична для CPython. Точный формат вывода здесь не определен и может измениться.
-
sys.
dllhandle
¶ Целое число, указывающее дескриптор библиотеки DLL Python.
Availability: Windows.
-
sys.
displayhook
(value)¶ Если value не
None
, эта функция печатаетrepr(value)
вsys.stdout
и сохраняет value вbuiltins._
. Еслиrepr(value)
не encodable кsys.stdout.encoding
с ошибкойsys.stdout.errors
обработчик (который является, вероятно,'strict'
), закодируйте его кsys.stdout.encoding
с ошибкой'backslashreplace'
обработчик.sys.displayhook
вызывается по результату оценки выражения, введенного в интерактивном сеансе Python. Отображение этих значения можно настроить, назначивsys.displayhook
другую функцию с одним аргументом.Псевдо-код:
def displayhook(value): if value is None: return # Установить '_' в None, чтобы избежать рекурсии builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = value
Изменено в версии 3.2: Использовать
'backslashreplace'
обработчик ошибок наUnicodeEncodeError
.
-
sys.
dont_write_bytecode
¶ Если это так, Python не будем пытаться записать
.pyc
файлы при импорте исходных модулей. Этот значение изначально имеет значениеTrue
илиFalse
в зависимости от параметра командной строки-B
и переменной средыPYTHONDONTWRITEBYTECODE
, но его можно настроить для управления созданием файла байт-кода.
-
sys.
pycache_prefix
¶ Если этот параметр установлен (не
None
), Python будет записывать файлы кэша байткода.pyc
в (и считывать их из) параллельное дерево каталогов, основанное на этом каталоге, а не из__pycache__
каталогов в дереве исходных код. Все__pycache__
каталоги в дереве исходного код будут игнорироваться, а новые файлы «.pyc» будут записаны в префиксе pycache. Таким образом, если вы используетеcompileall
в качестве этапа предварительного построения, вы должны убедиться, что вы запустите его с тем же префиксом pycache (если есть), который вы будете использовать во время выполнения.Относительный путь интерпретируется относительно текущего рабочего каталога.
Этот значение первоначально установлен на основе значение параметра командной строки
-X
pycache_prefix=PATH
, или переменная окруженияPYTHONPYCACHEPREFIX
(командная строка имеет приоритет). Если ни тот, ни другой не установлены, этоNone
.Добавлено в версии 3.8.
-
sys.
excepthook
(type, value, traceback)¶ Эта функция позволяет распечатать данный трейсбэк и исключение для
sys.stderr
.При возникновении и отсутствии исключения интерпретатор вызывает
sys.excepthook
с тремя аргументами: класс исключения, сущность исключения и объект трейсбэк. В интерактивном сеансе это происходит непосредственно перед возвращенный элемента управления в подсказку; в Python программе это происходит непосредственно перед выходом из программы. Обработка таких исключений верхнего уровня может быть настроена путем назначенияsys.excepthook
другой функции с тремя аргументами.Создать событие аудита,
sys.excepthook
с аргументамиhook
,type
,value
,traceback
, когда возникает непроверенное исключение. Если хук не установлен,hook
может бытьNone
. Если какой-либо хук вызывает исключение, изRuntimeError
будет подавлен вызов хук. В противном случае об исключении хук аудита будет сообщено как о неразумном и будет вызванsys.excepthook
.См.также
Функция
sys.unraisablehook()
обрабатывает неразрешимые исключения, а функцияthreading.excepthook()
обрабатывает исключения, создаваемыеthreading.Thread.run()
.
-
sys.
__breakpointhook__
¶ -
sys.
__displayhook__
¶ -
sys.
__excepthook__
¶ -
sys.
__unraisablehook__
¶ Эти объекты содержат исходные значения
breakpointhook
,displayhook
,excepthook
иunraisablehook
в начале программы. Они сохраняются так, чтоbreakpointhook
,displayhook
иexcepthook
,unraisablehook
могут быть восстановлены в случае их замены на сломанные или альтернативные объекты.Добавлено в версии 3.7: __breakpointhook__
Добавлено в версии 3.8: __unraisablehook__
-
sys.
exc_info
()¶ Эта функция возвращает кортеж из трех значения, которые предоставляют информацию об особой ситуации, которая в настоящее время обрабатывается. Информационный возвращенный относится как к текущему поток, так и к текущему стеку фрейм. Если текущий фрейм стека не обрабатывает исключение, информация берется от вызывающего фрейм стека или его вызывающего абонента и т.д. до тех пор, пока не будет найден фрейм стека, который обрабатывает исключение. Здесь «обработка исключения» определяется как «выполнение исключения» клаузула. Для любого фрейм стека доступна только информация о обрабатываемом исключении.
Если никакие исключения не обрабатываются где-либо в стеке, возвращенный кортеж, содержащий три
None
значения. В противном случае значения возвращенный(type, value, traceback)
. Их значение: type получает тип обрабатываемого исключения (подклассBaseException
); value получает сущность исключения (сущность типа исключения); traceback получает объект трассировки, который инкапсулирует стек вызовов в точке, где первоначально возникло исключение.
-
sys.
exec_prefix
¶ Строка, задающий префикс каталога для конкретного сайта, в котором установлены зависящие от платформы файлы Python; по умолчанию это также
'/usr/local'
. Это можно задать во время сборки с помощью аргумента--exec-prefix
для сценария configure. В частности, все файлы конфигурации (например, файл заголовкаpyconfig.h
) устанавливаются в директорииexec_prefix/lib/pythonX.Y/config
, а модули общей библиотеки устанавливаются вexec_prefix/lib/pythonX.Y/lib-dynload
, где X.Y - номер версии Python, например3.2
.Примечание
Если виртуальная среда действует, этот значение будет изменен в
site.py
для указания на виртуальную среду. По-прежнему доступны значение для установки Python черезbase_exec_prefix
.
-
sys.
executable
¶ Строка, дающая абсолютный путь исполняемого двоичного файла для Python интерпретатор, в системах, где это имеет смысл. Если Python не удается получить реальный путь к исполняемому файлу,
sys.executable
будет пустая строка илиNone
.
-
sys.
exit
([arg])¶ Выход из Python. Это реализуется путём поднятия
SystemExit
исключения, поэтому выполняются действия очистки, определенные заключительными предложениямиtry
инструкции, и возможно перехватить попытку выхода на внешнем уровне.Необязательным аргументом arg может быть целое число со статусом выхода (значение по умолчанию равно нулю) или другой тип объекта. Если это целое число, нулевое число считается «успешным окончанием», а любое ненулевое значение считается «ненормальным окончанием» оболочками и т.п. Большинство систем требуют, чтобы он находился в диапазоне 0 - 127, и дают неопределенные результаты в противном случае. Некоторые системы имеют соглашение о присвоении конкретных значений конкретным коды выхода, но они, как правило, недостаточно развиты; Unix-программы обычно используют 2 для синтаксических ошибок командной строки и 1 для всех других типов ошибок. Если передается объект другого типа,
None
эквивалентно передаче нуля, а любой другой объект печатается дляstderr
и приводит к код выхода 1. В частности,sys.exit("some error message")
быстрый способ выхода из программы при возникновении ошибки.Поскольку
exit()
в конечном итоге «только» вызывает исключение, он будет выходить из процесса только при вызове из основного поток, и исключение не перехватывается.Изменено в версии 3.6: Если ошибка происходит в очистке после того, как Python интерпретатор поймал
SystemExit
(такой как ошибка при смывании буферизованных данных в стандартных потоках), статус выхода изменен на 120.
-
sys.
flags
¶ В именованный кортеж flags отображается состояние флагов командной строки. Эти атрибуты доступны только для чтения.
атрибут флаг debug
-d
inspect
-i
interactive
-i
isolated
-I
optimize
-O
или-OO
dont_write_bytecode
-B
no_user_site
-s
no_site
-S
ignore_environment
-E
verbose
-v
bytes_warning
-b
quiet
-q
hash_randomization
-R
dev_mode
-X
dev
utf8_mode
-X
utf8
Изменено в версии 3.2: Добавлен
quiet
атрибут для нового флага-q
.Добавлено в версии 3.2.3:
hash_randomization
атрибут.Изменено в версии 3.3: Удалены устаревшие
division_warning
атрибут.Изменено в версии 3.4: Добавлен
isolated
атрибут для флага-I
isolated
.
-
sys.
float_info
¶ В именованный кортеж содержится информация о типе float. Содержит сведения низкого уровня о точности и внутреннем представлении. Эти значения соответствуют различным константам с плавающей запятой, определенным в стандартном файле заголовка,
float.h
для языка программирования «C»; подробнее см. раздел 5.2.4.2.2 стандарта ISO/IEC C 1999 года [C99] «Характеристики плавающих типов».атрибут float.h макрос объяснение epsilon
DBL_EPSILON разница между 1.0 и наименьшим значением больше 1.0, который представляется в виде числа с float dig
DBL_DIG максимальное количество десятичных цифр, которые могут быть точно представлены в float; см. ниже mant_dig
DBL_MANT_DIG точность float: число базовых цифр radix
в значении и значении с плавающей точкойmax
DBL_MAX максимальная представляемая положительная конечная float max_exp
DBL_MAX_EXP максимальное целое число e так что radix**(e-1)
является представимым конечным floatmax_10_exp
DBL_MAX_10_EXP максимальное целое число e так что 10**e
находится в диапазоне представимых конечных плавающих чиселmin
DBL_MIN минимальный представляемый положительный normalized float min_exp
DBL_MIN_EXP минимальное целое число e, так что radix**(e-1)
является нормированным floatmin_10_exp
DBL_MIN_10_EXP минимальное целое число e, так что 10**e
является нормированным floatradix
FLT_RADIX радиус представления экспоненты rounds
FLT_ROUNDS целочисленная константа, представляющая режим округления, используемый для арифметических операций. Это отражает значение системы FLT_ROUNDS макроса во время запуска интерпретатора. См. раздел 5.2.4.2.2 стандарта C99 для объяснения возможных значений и их смыслов. Атрибут
sys.float_info.dig
нуждается в дальнейшем объяснении. Еслиs
некоторая строка, представляющий десятичное число с не более чемsys.float_info.dig
значащими цифрами, то преобразованиеs
в float и обратно восстановит строка, представляющий тот же самый десятичный значение:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # десятичная строка с 15 значащими цифрами >>> format(float(s), '.15g') # конвертировать в float и обратно -> то же значение '3.14159265358979'
Но для строки с более чем
sys.float_info.dig
значимыми цифрами это не всегда верно:>>> s = '9876543211234567' # 16 16 значащих цифр - это слишком много! >>> format(float(s), '.16g') # конверсия меняет значение '9876543211234568'
-
sys.
float_repr_style
¶ Строка, указывающее поведение функции
repr()
для чисел с плавающей точкой. Если строка имеет значение'short'
то для конечного floatx
,repr(x)
стремится произвести короткое строка со свойством, котороеfloat(repr(x)) == x
. Это обычное поведение в Python 3.1 и выше. В противном случаеfloat_repr_style
имеет значение'legacy'
иrepr(x)
ведет себя так же, как в версиях Python до 3.1.Добавлено в версии 3.1.
-
sys.
getallocatedblocks
()¶ Возвращает количество блоков памяти, выделенных интерпретатор в настоящее время, независимо от их размера. Эта функция в основном полезна для отслеживания и отладки утечек памяти. Из-за внутренних кэшей интерпретатор результат может варьироваться от вызова к вызову; возможно, вам придется позвонить
_clear_type_cache()
иgc.collect()
, чтобы получить более предсказуемые результаты.Если построение или реализация Python не могут разумно вычислить эту информацию,
getallocatedblocks()
разрешается вместо этого возвращает 0.Добавлено в версии 3.4.
-
sys.
getandroidapilevel
()¶ Возвращает время сборки API версии Android как целое число.
Availability: Android.
Добавлено в версии 3.7.
-
sys.
getcheckinterval
()¶ Возвращает «контрольный интервал» интерпретатор; см.
setcheckinterval()
.Не рекомендуется, начиная с версии 3.2: Вместо этого используйте
getswitchinterval()
.
-
sys.
getdefaultencoding
()¶ Возвращает название текущего строка кодировка используемый по умолчанию внедрением Юникод.
-
sys.
getdlopenflags
()¶ Возвращает текущего значение флагов, используемый для
dlopen()
вызовов. Символьные имена значения флага можно найти в модулеos
(константыRTLD_xxx
, например,os.RTLD_LAZY
).Availability: Unix.
-
sys.
getfilesystemencoding
()¶ Возвращает имя кодировка используемый для преобразования между именами файлов в юникоде и именами файлов в байтах. Для лучшей совместимости str следует используемый для имен файлов во всех случаях, хотя также поддерживается представление имен файлов в виде байтов. Функции, принимающие или возвращающие имена файлов, должны поддерживать str или bytes и внутренне преобразовывать в предпочтительное представление системы.
Эта кодировка всегда совместима с ASCII.
os.fsencode()
иos.fsdecode()
должны быть используемый для обеспечения используемый правильного режима кодировка и ошибок.- В режиме UTF-8 кодировка
utf-8
на любой платформе. - На macOS кодировка является
'utf-8'
. - В Unix кодировка является кодировка локали.
- В Windows кодировка может быть
'utf-8'
или'mbcs'
в зависимости от конфигурации пользователя. - На Android кодировка
'utf-8'
. - В VxWorks кодировка
'utf-8'
.
Изменено в версии 3.2:
getfilesystemencoding()
результат больше нельзяNone
.Изменено в версии 3.6: Windows больше не гарантирует возвращает
'mbcs'
. Дополнительные сведения см. в разделах PEP 529 и_enablelegacywindowsfsencoding()
.Изменено в версии 3.7: Возвращает «utf-8» в режиме UTF-8.
- В режиме UTF-8 кодировка
-
sys.
getfilesystemencodeerrors
()¶ Возвращает имя используемый режима ошибок для преобразования имен файлов в юникоде и имен файлов в байтах. Имя кодировка возвращенный от
getfilesystemencoding()
.os.fsencode()
иos.fsdecode()
должны быть используемый для обеспечения используемый правильного режима кодировка и ошибок.Добавлено в версии 3.6.
-
sys.
getrefcount
(object)¶ Возвращает количество ссылок на object. Обычно возвращенный счетчика выше, чем можно ожидать, поскольку он включает (временную) ссылку в качестве аргумента для
getrefcount()
.
-
sys.
getrecursionlimit
()¶ Возвращает текущем значение предела рекурсии максимальная глубина стека Python интерпретатор. Этот предел не позволяет бесконечной рекурсии вызвать переполнение стека C и сбой Python. Его можно задать по
setrecursionlimit()
.
-
sys.
getsizeof
(object[, default])¶ Возвращает размер объекта в байтах. Объект может быть любым типом объекта. Все встроенные объекты будут возвращает правильные результаты, но это не обязательно должно быть верным для сторонних расширений, поскольку это специфично для реализации.
Учитывается только потребление памяти, непосредственно приписанное объекту, а не потребление памяти объектов, на которые он ссылается.
Если этот параметр задан, default будет возвращенный, если объект не предоставляет средства для извлечения размера. В противном случае поднимается
TypeError
.getsizeof()
вызывает метод__sizeof__
объекта и добавляет дополнительные служебные данные сборщика мусора, если объект управляется сборщиком мусора.Пример рекурсивного использования рекурсивный размер рецепта для поиска размера контейнеров и всего их содержимого см. в разделе
getsizeof()
.
-
sys.
getswitchinterval
()¶ Возвращает «поток интерпретатор переключают интервал»; см.
setswitchinterval()
.Добавлено в версии 3.2.
-
sys.
_getframe
([depth])¶ Возвращает объект фрейма из стека вызовов. Если задано необязательное целочисленное depth, возвращает объект фрейм, который многие вызывают под верхом стека. Если это глубже стека вызовов,
ValueError
поднимается. Значение по умолчанию для depth равно нулю, возвращая фрейм в верхней части стека вызовов.Raises an auditing event
sys._getframe
with no arguments.Детали реализации CPython: Эта функция должна быть используемый только для внутренних и специализированных целей. Он не гарантированно существует во всех реализациях Python.
-
sys.
getprofile
()¶ Получить функцию профилировщика, заданную
setprofile()
.
-
sys.
gettrace
()¶ Получить функцию трассировки, заданную
settrace()
.Детали реализации CPython: Функция
gettrace()
предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т.п. Его поведение является частью платформы реализации, а не частью определения языка, и, таким образом, может быть доступно не во всех реализациях Python.
-
sys.
getwindowsversion
()¶ Возвращает именованный кортеж, описывающий текущую версию Windows. Именованные элементы: major, minor, build, platform, service_pack, service_pack_minor, service_pack_major, suite_mask, product_type и platform_version. service_pack содержит строку, platform_version 3-кортеж и все остальные значения являются целыми числами. Доступ к компонентам также возможен по имени, поэтому
sys.getwindowsversion()[0]
эквивалентноsys.getwindowsversion().major
. Для совместимости с предыдущими версиями индексированием извлекаются только первые 5 элементов.platform будет
2 (VER_PLATFORM_WIN32_NT)
.product_type может быть одним из следующих значений:
Константа Значение 1 (VER_NT_WORKSTATION)
Система является рабочей станцией. 2 (VER_NT_DOMAIN_CONTROLLER)
Система является контроллером домена. 3 (VER_NT_SERVER)
Система является сервером, а не контроллером домена. Эта функция охватывает функцию Win32
GetVersionEx()
; дополнительные сведения об этих полях см. в документации майкрософт поOSVERSIONINFOEX()
.platform_version возвращает точную основную версию, младшую версию и номер сборки текущей операционной системы, а не версию, эмулируемую для процесса. Он предназначен для использования в логирование, а не для обнаружения признаков.
Availability: Windows.
Изменено в версии 3.2: Изменен на именованный кортеж и добавлены service_pack_minor, service_pack_major, suite_mask и product_type.
Изменено в версии 3.6: Добавленный platform_version
-
sys.
get_asyncgen_hooks
()¶ Возвращает объект asyncgen_hooks, похожий на
namedtuple
формы „(firstiter, finalizer)“, где firstiter и finalizer должны быть либоNone
, либо функциями, принимающими асинхронный генератор-итератор в качестве аргумента, и используемый запланировать завершение асинхронного генератор событийный цикл.Добавлено в версии 3.6: Дополнительные сведения см. в разделе PEP 525.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411)
-
sys.
get_coroutine_origin_tracking_depth
()¶ Получить текущую глубину отслеживания происхождения короутины, заданную по
set_coroutine_origin_tracking_depth()
.Добавлено в версии 3.7.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411). Использовать его только для отладки.
-
sys.
hash_info
¶ Именованный кортеж, задающий параметры реализации числового хэша. Дополнительные сведения о хешировании числовых типов см. в разделе Хеширование числовых типов.
атрибут объяснение width
ширина в битах, используемый для хеш- значений modulus
простой модуль P, используемый для числовой хэш-схемы inf
значение хеша возвращается для положительной бесконечности nan
хэш-значение возвращаемое для nan imag
множитель используемый для мнимой части комплексного числа algorithm
имя алгоритма хеширования str, байта и memoryview hash_bits
внутренний выходной размер хэш-алгоритма seed_bits
размер начального ключа алгоритма хеширования Добавлено в версии 3.2.
Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits
-
sys.
hexversion
¶ Номер версии кодированный как одно целое число. Это гарантированно увеличивается с каждой версией, включая надлежащую поддержку непроизводственных выпусков. Например, чтобы проверить, что Python интерпретатор не менее версии 1.5.2, используйте:
if sys.hexversion >= 0x010502F0: # используйте некоторые расширенные функции ... else: # используйте альтернативную реализацию или предупредите пользователя ...
Это называется
hexversion
, так как оно действительно выглядит значимым только при рассмотрении как результат передачи его встроенной функцииhex()
. Именованный кортежsys.version_info
может быть используемый для более человечески- благоприятного кодировка той же информации.Подробнее с
hexversion
можно ознакомиться на сайте Версионирование API и ABI.
-
sys.
implementation
¶ Объект, содержащий сведения о реализации текущего Python интерпретатор. Следующие атрибуты должны существовать во всех реализациях Python.
name - идентификатор реализации, например,
'cpython'
. Фактическая строка определяется Python реализацией, но гарантированно ниже.version - именованный кортеж, в том же формате, что и
sys.version_info
. Представляет собой версию Python implementation. Это значение отличается от конкретного варианта Python language, которому соответствует текущий выполняемый интерпретатор, который представляетsys.version_info
. Например, для PyPy 1.8sys.implementation.version
может бытьsys.version_info(1, 8, 0, 'final', 0)
, тогда какsys.version_info
будетsys.version_info(2, 7, 2, 'final', 0)
. Для CPython они являются одинаковыми значение, поскольку являются эталонной реализацией.hexversion - версия реализации в шестнадцатеричном формате, как
sys.hexversion
.cache_tag - тег, используемый механизмом импорта в именах файлов кэшированных модулей. По конвенции это будет составной частью названия и версии осуществления, как и
'cpython-33'
. Однако при реализации Python можно использовать некоторые другие значение, если это уместно. Если дляcache_tag
установлено значениеNone
, это означает, что кэширование модуля должен быть отключен.sys.implementation
может содержать дополнительные атрибуты, специфичные для реализации Python. Эти нестандартные атрибуты должны начинаться с подчеркивания и не описаны здесь. Независимо от его содержания,sys.implementation
не будет изменяться ни во время выполнения интерпретатор, ни между версиями внедрения. (Однако он может изменяться между версиями на Python языках.) дополнительные сведения см. в разделе PEP 421.Добавлено в версии 3.3.
Примечание
Добавление новых требуемых атрибуты должно проходить через обычный процесс PEP. Дополнительные сведения см. в разделе PEP 421.
-
sys.
int_info
¶ Именованный кортеж, в котором содержится информация Python’а о внутреннем представлении целых чисел. Эти атрибуты доступны только для чтения.
Атрибут Объяснение bits_per_digit
количество битов, содержащихся в каждой цифре. В Python целые числа хранятся внутри по основанию 2**int_info.bits_per_digit
sizeof_digit
размер в байтах типа C, используемый для представления цифры Добавлено в версии 3.1.
-
sys.
__interactivehook__
¶ Когда этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатор в интерактивном режиме. Это делается после того, как файл
PYTHONSTARTUP
прочитан, так что вы можете установить этот хук там. Модульsite
устанавливает это.Вызывает событие аудита
cpython.run_interactivehook
с объектом хук в качестве аргумента при вызове хук при запуске.Добавлено в версии 3.4.
-
sys.
intern
(string)¶ Ввести string в таблицу «интернированный» строки и возвращает интернированный строка, который является string собой или копией. Интернированный строки полезен для получения небольшой производительности при поиске в словаре - если ключи в словаре интернированы, а ключ поиска интернирован, сравнение ключей (после хеширования) можно выполнить путем сравнения указателей вместо сравнения строка. Обычно, имена, используемый в программах Python автоматически интернированы, и словари используемый, чтобы держать модуль, класс или сущность атрибуты, интернировали ключи.
Интернированные строки не бессмертны; вы должны держать ссылку на возвращает значение
intern()
вокруг, чтобы извлечь выгоду из него.
-
sys.
is_finalizing
()¶ Возвращает
True
если Python интерпретатор отключен,False
в противном случае.Добавлено в версии 3.5.
-
sys.
last_type
¶ -
sys.
last_value
¶ -
sys.
last_traceback
¶ Эти три переменные не всегда определяются; они устанавливаются, когда исключение не обрабатывается и интерпретатор печатает сообщение об ошибке и трейсбэк стека. Их назначение состоит в том, чтобы позволить интерактивному пользователю импортировать модуль отладчика и участвовать в посмертной отладке без необходимости повторного выполнения команды, вызвавшей ошибку. (Типичное использование
import pdb; pdb.pm()
для входа в посмертный отладчик; для получения дополнительной информации см.pdb
модуль.)Значение переменных совпадает с значением возвращает значения из
exc_info()
выше.
-
sys.
maxsize
¶ Целое число, дающее максимальное значение переменной типа
Py_ssize_t
. Обычно он2**31 - 1
на 32-разрядной платформе и2**63 - 1
на 64-разрядной платформе.
-
sys.
maxunicode
¶ Целое число, дающее значение наибольшей точки код юникода, т.е.
1114111
(0x10FFFF
в шестнадцатеричном формате).Изменено в версии 3.3: Перед PEP 393,
sys.maxunicode
используемый, чтобы быть или0xFFFF
или0x10FFFF
, в зависимости от параметра конфигурации, который определил, были ли знаки Юникод сохранены как UCS-2 или UCS-4.
-
sys.
meta_path
¶ Список объектов поисковик мета-пути, для которых вызваны методы
find_spec()
, чтобы узнать, может ли один из объектов найти импортируемый модуль. Методfind_spec()
вызывается по крайней мере с абсолютным именем импортируемого модуля. Если импортируемый модуль содержится в пакете, то__path__
атрибут родительского пакета передается в качестве второго аргумента. Метод возвращает спецификация модуля илиNone
, если модуль не найден.См.также
importlib.abc.MetaPathFinder
- Абстрактный базовый класс, определяющий интерфейс объектов поиска на
meta_path
. importlib.machinery.ModuleSpec
- Конкретный класс, который
find_spec()
должен возвращает сущности.
Изменено в версии 3.4: Технические характеристики модуля были введены в Python 3.4, по PEP 451. Более ранние версии Python искали метод под названием
find_module()
. Этот метод по-прежнему вызывается как резервный, если в записиmeta_path
отсутствует методfind_spec()
.
-
sys.
modules
¶ Этот словарь сопоставляет имена модулей с уже загруженными модулями. Этим можно манипулировать, чтобы принудительно перезарядить модули и другие приемы. Однако замена словаря не обязательно будет работать так, как ожидалось, и удаление основных элементов из словаря может привести к сбою Python.
-
sys.
path
¶ Список строки, указывающий путь поиска модулей. Инициализировано из переменной среды
PYTHONPATH
, плюс зависящее от установки значение по умолчанию.Как было инициализировано при запуске программы, первым элементом этого списка,
path[0]
, является каталог, содержащий сценарий, который был используемый для вызова Python интерпретатор. Если каталог сценариев недоступен (например, если интерпретатор вызывается в интерактивном режиме или сценарий считывается со стандартного ввода),path[0]
является пустым строка, который сначала направляет Python на поиск модулей в текущем каталоге. Обратите внимание, что каталог сценария вставляется before записей, вставляемых в результатеPYTHONPATH
.Программа может изменять этот список для своих целей. К строки следует добавлять только
sys.path
и байты; все остальные типы данных игнорируются во время импорта.
-
sys.
path_hooks
¶ Список вызывающих объектов, которые используют аргумент пути для создания поисковика для пути. Если поиск может быть создан, он должен быть возвращенный вызываемым, в противном случае поднимите
ImportError
.Первоначально указано в PEP 302.
-
sys.
path_importer_cache
¶ Словарь, выполняющий роль кэш для поисковика объектов. Ключи - это пути, переданные
sys.path_hooks
, а значения - найденные. Если путь является допустимым путем файловой системы, но наsys.path_hooks
не найден поиск, тоNone
сохраняется.Первоначально указано в PEP 302.
Изменено в версии 3.3:
None
хранится вместоimp.NullImporter
, если не найден ни один поисковик.
-
sys.
platform
¶ Этот строка содержит идентификатор платформы, который можно используемый для добавления компонентов платформы к
sys.path
, сущность.Для Unix-систем, за исключением Linux и AIX, это имя ОС в нижнем регистре, возвращенный по
uname -s
, с первой частью версии, возвращенный поuname -r
, добавленной, например,'sunos5'
или'freebsd8'
, at the time when Python was built. Если не требуется тестирование для определенной версии системы, рекомендуется использовать следующую идиому:if sys.platform.startswith('freebsd'): # Специфичный для FreeBSD код здесь ... elif sys.platform.startswith('linux'): # Linux-специфичный код здесь ... elif sys.platform.startswith('aix'): # AIX-специфичный код здесь ...
Для других систем значения являются:
Система platform
значениеAIX 'aix'
Linux 'linux'
Windows 'win32'
Windows/Cygwin 'cygwin'
macOS 'darwin'
Изменено в версии 3.3: В Linux
sys.platform
больше не содержит основную версию. Это всегда'linux'
, вместо'linux2'
или'linux3'
. Поскольку старые версии Python включают номер версии, рекомендуется всегда использовать приведенную выше идиомуstartswith
.Изменено в версии 3.8: В AIX
sys.platform
больше не содержит основную версию. Это всегда'aix'
, вместо'aix5'
или'aix7'
. Поскольку старые версии Python включают номер версии, рекомендуется всегда использовать приведенную выше идиомуstartswith
.См.также
os.name
имеет более грубую гранулярность.os.uname()
предоставляет зависящую от системы информацию о версии.Модуль
platform
обеспечивает детальную проверку идентификационных данных системы.
-
sys.
prefix
¶ Строка, задающий префикс каталога для конкретного сайта, в котором установлены независимые от платформы файлы Python; по умолчанию это строка
'/usr/local'
. Это можно задать во время сборки с помощью аргумента--prefix
для сценария configure. Основная коллекция Python библиотечных модулей устанавливается в каталогprefix/lib/pythonX.Y
в то время как независимые от платформы заголовочные файлы (все, кромеpyconfig.h
) хранятся вprefix/include/pythonX.Y
, где X.Y - номер версии Python, например3.2
.Примечание
Если виртуальная среда действует, это значение будут изменены в
site.py
, чтобы указать на виртуальную среду. По- прежнему доступны значение для установки Python черезbase_prefix
.
-
sys.
ps1
¶ -
sys.
ps2
¶ Строки, определяющие основной и дополнительный запрос интерпретатор. Они определяются только в том случае, если интерпретатор находится в интерактивном режиме. Их начальные значения в данном случае
'>>> '
и'... '
. Если объект non-строка назначен любой переменной, егоstr()
повторно оценивается каждый раз, когда интерпретатор готовится к считыванию новой интерактивной команды; это может быть используемый для реализации динамического запроса.
-
sys.
setcheckinterval
(interval)¶ Установить «контрольный интервал» для интерпретатор. Это целое число значение определяет, как часто интерпретатор проверяет периодические вещи, такие как поток переключатели и сигнальные обработчики. Значение по умолчанию -
100
, т.е. проверка выполняется каждые 100 Python виртуальных инструкций. Установка большего значение может повысить производительность программ, использующих потоки. Установка значения значение<=
0 проверяет каждую виртуальную инструкцию, повышая быстродействие, а также накладные расходы.Не рекомендуется, начиная с версии 3.2: Эта функция больше не имеет эффекта, так как внутренняя логика для поток переключения и асинхронных задач была переписана. Вместо этого используйте
setswitchinterval()
.
-
sys.
setdlopenflags
(n)¶ Установить флаги используемый интерпретатор для требований
dlopen()
, такой как тогда, когда интерпретатор загружает дополнительные модули. Среди прочего, это позволит ленивое разрешение символов при импорте модуля, если он называетсяsys.setdlopenflags(0)
. Для совместного использования символов в модулях внутренних линий вызовите какsys.setdlopenflags(os.RTLD_GLOBAL)
. Символьные имена значения флага можно найти в модулеos
(константыRTLD_xxx
, например,os.RTLD_LAZY
).Availability: Unix.
-
sys.
setprofile
(profilefunc)¶ Установить функцию профиля системы, которая позволяет реализовать Python источник код профилировщик в Python. Дополнительные сведения о профилировщике Профилировщики Python см. в главе Python. Функция профиля системы вызывается аналогично функции трассировки системы (см.
settrace()
), но вызывается с различными событиями, например, не вызывается для каждой выполняемой строки код (только при вызове и возвращает, но событие возвращает сообщается даже при установке исключения). Функция является поток-specific, но профилировщик не может знать о контекст переключениях между потоки, поэтому нет смысла использовать это при наличии нескольких потоки. Также его возвращает значение не используемый, поэтому он может просто возвращаетNone
. Ошибка в функции профиля приведет к отмене настройки.Функции профиля должны иметь три аргумента: frame, event и arg. frame - текущий фрейм стека. event - это строка:
'call'
,'return'
,'c_call'
,'c_return'
или'c_exception'
. arg зависит от типа события.Raises an auditing event
sys.setprofile
with no arguments.События имеют следующее значение:
'call'
- Вызывается функция (или какой-либо другой введенный блок
код). Вызывается функция профиля; arg - это
None
. 'return'
- Функция (или другой блок код) будет возвращает. Вызывается
функция профиля; arg - это значение, который будет возвращенный или
None
, если событие вызвано возникновением исключения. 'c_call'
- Функция C будет вызвана. Это может быть функция расширения или встроенная функция. arg - объект функции C.
'c_return'
- Функция C имеет возвращенный. arg - объект функции C.
'c_exception'
- Функция C вызвала исключение. arg - объект функции C.
-
sys.
setrecursionlimit
(limit)¶ Установить максимальную глубину стека Python интерпретатор limit. Этот предел не позволяет бесконечной рекурсии вызвать переполнение стека C и сбой Python.
Максимально возможный предел зависит от платформы. Пользователю может потребоваться установить более высокий предел, если у него есть программа, требующая глубокой рекурсии, и платформа, поддерживающая более высокий предел. Это следует делать с осторожностью, потому что слишком высокий предел может привести к краху.
Если новый предел слишком низок при текущей глубине рекурсии, создается
RecursionError
исключение.Изменено в версии 3.5.1: Если новый предел слишком низок на текущей глубине рекурсии, теперь создается исключение
RecursionError
.
-
sys.
setswitchinterval
(interval)¶ Установить поток интервал переключения интерпретатор (в секундах). Этот значение с плавающей запятой определяет идеальную продолжительность «временных интервалов», выделенных для параллельного выполнения Python потоки. Обратите внимание, что фактические значение могут быть выше, особенно если используемый длительные внутренние функции или методы. Кроме того, какой поток становится запланированным в конце интервала, является решением операционной системы. У интерпретатор нет собственного планировщика.
Добавлено в версии 3.2.
-
sys.
settrace
(tracefunc)¶ Установить функцию трассировки системы, которая позволяет реализовать отладчик Python source код в Python. Функция является потокоспецифичными; чтобы отладчик поддерживал несколько потоки, он должен зарегистрировать функцию трассировки с использованием
settrace()
для каждого отлаживаемого поток или использоватьthreading.settrace()
.Функции трассировки должны иметь три аргумента: frame, event и arg. frame - текущий фрейм стека. event - это строка:
'call'
,'line'
,'return'
,'exception'
или'opcode'
. arg зависит от типа события.Функция трассировки вызывается (с параметром event установлено значение
'call'
) при каждом вводе нового локальная область видимости; он должен возвращает ссылку на функцию трассировки локальная, которая должна быть используемый для нового область видимости, илиNone
, если область видимости не следует отслеживать.Функция трассировки локальная должна возвращает ссылку на себя (или на другую функцию для дальнейшей трассировки в том область видимости) или
None
отключить трассировку в этом область видимости.Если в функции трассировки произошла какая-либо ошибка, она будет отменена, как и
settrace(None)
.События имеют следующее значение:
'call'
- Вызывается функция (или какой-либо другой введенный блок
код). Вызывается функция глобальной трассировки; arg является
None
; возвращает значение определяет функцию трассировки локальная. 'line'
- Интерпретатор собирается выполнить новую строку код или
повторно выполнить условие цикла. Вызывается функция трассировки локальная;
arg является
None
; возвращает значение определяет новую функцию трассировки локальная. Подробное объяснение того, как это работает, см. в разделеObjects/lnotab_notes.txt
. События для каждой строки могут быть отключены для фрейм путем установки для параметраf_trace_lines
значенияFalse
на этом фрейм. 'return'
- Функция (или другой блок код) будет возвращает. Вызывается
функция трассировки локальная; arg - это значение, который будет
возвращенный или
None
, если событие вызвано возникновением исключения. возвращает значение функции трассировки игнорируется. 'exception'
- Возникло исключение. Вызывается функция трассировки локальная;
arg - кортеж
(exception, value, traceback)
; возвращает значение определяет новую функцию трассировки локальная. 'opcode'
- Интерпретатор собирается выполнить новый опкод (для получения
dis
подробной информации см. опкод). Вызывается функция трассировки локальная; arg являетсяNone
; возвращает значение определяет новую функцию трассировки локальная. Per-опкод события не выдаются по умолчанию: их необходимо явно запросить, установив дляf_trace_opcodes
значениеTrue
на фрейм.
Следует отметить, что в случае распространения исключения по цепочке вызывающих абонентов на каждом уровне генерируется событие
'exception'
.Для более детального использования можно задать функцию трассировки, назначив
frame.f_trace = tracefunc
явно, а не полагаясь на то, что она будет задана косвенно через возвращает значение из уже установленной функции трассировки. Это также необходимо для активации функции трассировки на текущем фрейм, чегоsettrace()
не делает. Следует отметить, что для этого необходимо установить функцию глобальной трассировки сsettrace()
, чтобы включить механизм трассировки во время выполнения, но она не должна быть одной и той же функцией трассировки (например, она может быть функцией трассировки с низкими накладными расходами, которая просто возвращаетNone
немедленно отключить себя на каждом фрейме).Дополнительные сведения об объектах код и фрейм см. в разделе Стандартная иерархия типов.
Raises an auditing event
sys.settrace
with no arguments.Детали реализации CPython: Функция
settrace()
предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т.п. Его поведение является частью платформы реализации, а не частью определения языка, и, таким образом, может быть доступно не во всех реализациях Python.Изменено в версии 3.7:
'opcode'
добавлен тип события;f_trace_lines
иf_trace_opcodes
атрибуты добавлены к кадрам
-
sys.
set_asyncgen_hooks
(firstiter, finalizer)¶ Принимает два необязательных аргумента ключевой, которые являются вызываемыми и принимают итератор асинхронного генератора в качестве аргумента. Вызываемый firstiter вызывается при первой итерации асинхронного генератор. Этот finalizer будет вызван, когда будет собираться мусор асинхронного генератор.
Raises an auditing event
sys.set_asyncgen_hooks_firstiter
with no arguments.Raises an auditing event
sys.set_asyncgen_hooks_finalizer
with no arguments.Два события аудита возникают, поскольку базовый API состоит из двух вызовов, каждый из которых должен вызывать собственное событие.
Добавлено в версии 3.6: Дополнительные сведения см. в разделе PEP 525, а ссылочный пример метода finalizer см. в разделе реализация
asyncio.Loop.shutdown_asyncgens
в разделе Lib/asyncio/base_events.pyПримечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411)
-
sys.
set_coroutine_origin_tracking_depth
(depth)¶ Позволяет включить или отключить отслеживание происхождения корутина. Если этот параметр включен,
cr_origin
атрибут объектов coroutine будет содержать кортеж кортежей (имя файла, номер строки, имя функции), описывающий трейсбэк, в котором был создан объект coroutine, с последним вызовом. При отключенииcr_origin
будет None.Для включения передайте depth значение больше нуля; это задает количество кадров, информация о которых будет записываться. Чтобы отключить, передайте depth set равным нулю.
Этот параметр потокоспецифичный.
Добавлено в версии 3.7.
Примечание
Эта функция была добавлена на временной основе (подробнее см. PEP 411). Использовать его только для отладки.
-
sys.
_enablelegacywindowsfsencoding
()¶ Изменяет кодировку файловой системы по умолчанию и режим ошибок на «mbcs» и «replace» соответственно для обеспечения согласованности с версиями Python до версии 3.6.
Это эквивалентно определению переменной среды
PYTHONLEGACYWINDOWSFSENCODING
перед запуском Python.Availability: Windows.
Добавлено в версии 3.6: Дополнительные сведения см. в разделе PEP 529.
-
sys.
stdin
¶ -
sys.
stdout
¶ -
sys.
stderr
¶ Файловые объекты, используемый интерпретатор для стандартного ввода, вывода и ошибок:
stdin
используемый для всех интерактивных входных данных (включая вызовыinput()
);stdout
используемый для выводаprint()
и выражение инструкции и для подсказокinput()
;- собственные запросы интерпретатор и сообщения об ошибках отправляются в
stderr
.
Эти потоки являются регулярными текстовыми файлами как те, которые возвращенный функцией
open()
. Их параметры выбираются следующим образом:символ кодировки зависит от платформы. В платформах, отличных от Windows, используется кодировка локали (см.
locale.getpreferredencoding()
).В Windows для консольного устройства UTF-8 используемый. Устройства Non-символ, такие как дисковые файлы и пайпы используют системный locale кодировка (т.е. ANSI кодовая страница). Не консольные устройства символ, такие как NUL (т.е. где
isatty()
возвращаетTrue
), используют значение кодовых страниц ввода и вывода консоли при запуске соответственно для stdin и stdout/stderr. По умолчанию используется системная locale кодировка, если процесс изначально не подключен к консоли.Особое поведение консоли можно переопределить путем установки переменной среды PYTHONLEGACYWINDOWSSTDIO перед запуском Python. В этом случае кодовые страницы консоли используемый, как и для любого другого символ устройства.
Под всеми платформами вы можете отвергнуть символ кодировка, установив переменную окружения
PYTHONIOENCODING
прежде, чем начать Python или при помощи нового параметра командной строки-X
utf8
и переменной окруженияPYTHONUTF8
. Однако для консоли Windows это применимо только в том случае, если также установленPYTHONLEGACYWINDOWSSTDIO
.В интерактивном режиме потоки
stdout
иstderr
буферизуются по строкам. В противном случае они буферизуются как обычные текстовые файлы. Этот значение можно переопределить с помощью параметра командной строки-u
.
Примечание
Для записи или чтения двоичных данных из/в стандартные потоки используйте базовый двоичный объект
buffer
. Например, чтобы записать байты вstdout
, используйтеsys.stdout.buffer.write(b'abc')
.Однако, если вы пишете библиотеку (и не управляете тем, в какой контекст будет выполняться ее код), помните, что стандартные потоки могут быть заменены подобными файлам объектами
io.StringIO
, которые не поддерживаютbuffer
атрибут.
-
sys.
__stdin__
¶ -
sys.
__stdout__
¶ -
sys.
__stderr__
¶ Эти объекты содержат исходные значения
stdin
,stderr
иstdout
в начале программы. Они используемый во время завершения и могут быть полезны для печати в фактическом стандартном потоке независимо от того, был ли перенаправлен объектsys.std*
.Также можно используемый восстановить фактические файлы в известные рабочие файловые объекты, если они были перезаписаны поврежденным объектом. Однако предпочтительным способом является явное сохранение предыдущего потока перед его заменой и восстановление сохраненного объекта.
Примечание
При некоторых условиях
stdin
,stdout
иstderr
, а также оригинальный значения__stdin__
,__stdout__
и__stderr__
могут бытьNone
. Обычно это относится к приложениям Windows GUI, которые не подключены к консоли, и Python приложения, запущенные с pythonw.
-
sys.
thread_info
¶ Именованный кортеж хранение информации о реализации потоков.
Атрибут Объяснение name
Имя реализации потока:
'nt'
: Windows потоки'pthread'
: POSIX потоки'solaris'
: Solaris потоки
lock
Имя реализации блокировки:
'semaphore'
: блокировка использует семафор'mutex+cond'
: блокировка использует мьютекс и переменная условияNone
если эта информация неизвестна
version
Имя и версия библиотеки thread. Это строка или None
, если эта информация неизвестна.Добавлено в версии 3.3.
-
sys.
tracebacklimit
¶ Если для этой переменной задано целочисленное значение, она определяет максимальное количество уровней трейсбэк информации, выводимой на печать при возникновении необработанного исключения. Значение по умолчанию -
1000
. Если установлено значение0
или менее, вся трейсбэк информация подавляется, и печатаются только тип исключения и значение.
-
sys.
unraisablehook
(unraisable, /)¶ Обработайте невыполнимое исключение.
Вызывается, когда возникло исключение, но Python не может его обработать. Например, когда деструктор вызывает исключение или во время сбора мусора (
gc.collect()
).Аргумент unraisable имеет следующие атрибуты:
- exc_type: тип исключения.
- exc_value: исключение значение, может быть
None
. - exc_traceback: исключение трейсбэк, может быть
None
. - err_msg: сообщение об ошибке, может быть
None
. - object: объект, вызывающий исключение, может быть
None
.
По умолчанию хук форматирует err_msg и object как:
f'{err_msg}: {object!r}'
; используйте сообщение об ошибке «Исключение проигнорировано в», если err_msgNone
.sys.unraisablehook()
можно переопределить, чтобы управлять обработкой неразрешимых исключений.Хранение exc_value с помощью пользовательского хук может создать ссылочный цикл. Он должен быть очищен явным образом, чтобы прервать ссылочный цикл, если исключение больше не требуется.
Сохранение object с помощью пользовательского хук может восстановить его, если для него задан объект, который завершается. Избегайте сохранения object после завершения пользовательского хук, чтобы избежать восстановления объектов.
См. также
excepthook()
, в которой рассматриваются непроверенные исключения.Создание
sys.unraisablehook
событий аудита с аргументамиhook
,unraisable
при возникновении исключения, которое не может быть обработано. Объектunraisable
совпадает с объектом, передаваемым в хук. Если хук не установлен,hook
может бытьNone
.Добавлено в версии 3.8.
-
sys.
version
¶ Строка, содержащая номер версии Python интерпретатор плюс дополнительную информацию о номере сборки и используемый компилятора. Эта строка отображается при запуске интерактивного интерпретатор. Не извлекайте из него информацию о версии, а используйте
version_info
и функции, предоставляемые модулемplatform
.
-
sys.
api_version
¶ Версия C API для этого интерпретатор. Программисты могут найти это полезным при возникновении конфликтов версий отладки между Python и модулями расширения.
-
sys.
version_info
¶ Кортеж, содержащий пять компонентов номера версии: major, minor, micro, releaselevel и serial. Все значения, кроме releaselevel, являются целыми числами; уровень деблокирования -
'alpha'
,'beta'
,'candidate'
или'final'
. Значениеversion_info
значение, соответствующее Python версии 2.0, равно(2, 0, 0, 'final', 0)
. Доступ к компонентам также возможен по имени, поэтомуsys.version_info[0]
эквивалентноsys.version_info.major
и т. д.Изменено в версии 3.1: Добавлен именованный компонент атрибуты.
-
sys.
warnoptions
¶ Это детальная реализация фреймворк предупреждений; не изменяйте этот значение. Дополнительные сведения о
warnings
предупреждений см. в модуле фреймворк.
-
sys.
winver
¶ Номер версии, используемый для формирования разделов реестра на платформах Windows. Он хранится как строка ресурс 1000 в DLL Python. Обычно значение представляет собой первые три символа
version
. Он предусмотрен в модулеsys
в информационных целях; изменение этого значение не влияет на разделы реестра, используемый Python.Availability: Windows.
-
sys.
_xoptions
¶ Словарь различных специфичных для реализации флагов, передаваемых через параметр командной строки
-X
. Имена опций либо сопоставляются с их значения, если они заданы явно, либоTrue
. Пример:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}
Детали реализации CPython: Это CPython-специфический способ доступа к опциям, передаваемым через
-X
. Другие реализации могут экспортировать их другими средствами или вообще не экспортировать.Добавлено в версии 3.2.
Цитаты
[C99] | ISO/IEC 9899:1999. «Языки программирования – C.» Публичный проект этого стандарта доступен по адресу http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf. |