Spec-Zone.ru › Python 3.8

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 могут создать стек вызовов, используя такой кадр.

Это наиболее полезно для отладки тупиков: эта функция не требует сотрудничества заблокированных потоков, и стеки вызовов таких потоков замораживаются до тех пор, пока они остаются в тупике. Кадр, возвращаемый для не заблокированного потока, может не иметь отношения к текущей активности этого потока к моменту, когда вызывающий код изучает кадр.

Эта функция должна использоваться только для внутренних и специализированных целей.

Возбуждает аудиторное событие sys._current_frames без аргументов.

END_OF_DOCUMENT_MARKER
sys.breakpointhook()

Эта функция-обработчик вызывается встроенной функцией breakpoint(). По умолчанию она запускает отладчик pdb, но может быть назначена любая другая функция, позволяющая выбрать используемый отладчик.

Подпись этой функции зависит от того, что она вызывает. Например, стандартное связывание (например, pdb.set_trace()) не ожидает аргументов, но вы можете связать её с функцией, ожидающей дополнительных аргументов (позиционных и/или ключевых). Встроенная функция breakpoint() передаёт свои *args и **kws напрямую. То, что возвращает breakpointhooks(), возвращается функцией breakpoint().

Стандартная реализация сначала обращается к переменной среды PYTHONBREAKPOINT. Если она установлена в "0", функция возвращается немедленно; то есть, она является «безоперационной». Если переменная среды не установлена или установлена в пустую строку, вызывается 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.

Доступность: Windows.

sys.displayhook(value)

Если значение не None, эта функция выводит repr(value) в sys.stdout, и сохраняет значение в builtins._. Если repr(value) не может быть закодировано в sys.stdout.encoding с обработчиком ошибок sys.stdout.errors (что, вероятно, 'strict' ), закодируйте его в sys.stdout.encoding с обработчиком ошибок 'backslashreplace'.

Функция sys.displayhook вызывается при оценке выражения, введённого в интерактивной сессии Python. Отображение этих значений можно настроить, назначив другую одноаргументную функцию объекту sys.displayhook.

Псевдокод:

def displayhook(value):
    if value is None:
        return
    # Set '_' to None to avoid recursion
    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()

Эта функция возвращает кортеж из трёх значений, содержащих информацию об исключении, которое в данный момент обрабатывается. Возвращаемая информация специфична как для текущей нити, так и для текущей рамки стека вызовов. Если текущая рамка стека не обрабатывает исключение, информация берётся из вызывающей рамки стека, или её вызывающей, и так далее, пока не найдётся рамка стека, обрабатывающая исключение. Здесь «обработка исключения» определяется как «выполнение блока except».

Если нигде в стеке вызовов не обрабатывается исключение, возвращается кортеж, содержащий три None значения. В противном случае возвращаемые значения составляют (type, value, traceback). Их смысл: тип получает тип обрабатываемого исключения (подкласс BaseException); значение получает экземпляр исключения (экземпляр типа исключения); стек вызовов получает объект стека вызовов, который описывает стек вызовов в момент первоначального возникновения исключения.

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, поэтому действия по очистке, указанные в блоках finally операторов 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

int_max_str_digits

-X int_max_str_digits (ограничение длины целых строк)

Изменено в версии 3.2: Добавлен атрибут quiet для нового флага -q.

Добавлен в версии 3.2.3: Атрибут hash_randomization.

Изменено в версии 3.3: Удалён устаревший атрибут division_warning.

Изменено в версии 3.4: Добавлен атрибут isolated для флага -I isolated.

Изменено в версии 3.7: Добавлен атрибут dev_mode для нового флага -X dev и атрибут utf8_mode для нового флага -X utf8.

Изменено в версии 3.8.14: Добавлен атрибут int_max_str_digits.

END_OF_DOCUMENT_MARKER
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 в мантиссе float

max

DBL_MAX

максимальное представимое положительное конечное float

max_exp

DBL_MAX_EXP

максимальное целое число e такое, что radix**(e-1) является представимым конечным float

max_10_exp

DBL_MAX_10_EXP

максимальное целое число e такое, что 10**e находится в диапазоне представимых конечных float

min

DBL_MIN

минимальное представимое положительное нормализованное float

min_exp

DBL_MIN_EXP

минимальное целое число e такое, что radix**(e-1) является нормализованным float

min_10_exp

DBL_MIN_10_EXP

минимальное целое число e такое, что 10**e является нормализованным float

radix

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'    # decimal string with 15 significant digits
>>> format(float(s), '.15g')  # convert to float and back -> same value
'3.14159265358979'

Но для строк с более чем sys.float_info.dig значащими цифрами это не всегда верно:

>>> s = '9876543211234567'    # 16 significant digits is too many!
>>> format(float(s), '.16g')  # conversion changes value
'9876543211234568'
sys.float_repr_style

Строка, указывающая, как функция repr() ведет себя для float. Если строка имеет значение 'short', то для конечного float x, 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 во время сборки в виде целого числа.

Доступность: Android.

Введено в версии 3.7.

sys.getcheckinterval()

Возвращает «интервал проверки» интерпретатора; см. setcheckinterval().

Устарело начиная с версии 3.2: Используйте getswitchinterval() вместо этого.

sys.getdefaultencoding()

Возвращает имя текущего кодирования по умолчанию для строк, используемого реализацией Unicode.

sys.getdlopenflags()

Возвращает текущее значение флагов, используемых для вызовов dlopen(). Символьные имена значений флагов можно найти в модуле os (константы RTLD_xxx, например, os.RTLD_LAZY).

Доступность: Unix.

sys.getfilesystemencoding()

Возвращает имя кодирования, используемого для преобразования между именами файлов Unicode и именами файлов в байтах. Для наилучшей совместимости 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.

sys.getfilesystemencodeerrors()

Возвращает имя режима ошибок, используемого для преобразования между именами файлов Unicode и именами файлов в байтах. Имя кодирования возвращается из getfilesystemencoding().

os.fsencode() и os.fsdecode() должны использоваться для обеспечения использования правильного кодирования и режима ошибок.

Введено в версии 3.6.

sys.get_int_max_str_digits()

Возвращает текущее значение ограничения длины строки для преобразования целых чисел. См. также set_int_max_str_digits().

Введено в версии 3.8.14.

sys.getrefcount(object)

Возвращает счетчик ссылок на объект. Возвращаемый счет обычно на единицу больше, чем ожидалось, потому что он включает (временную) ссылку в качестве аргумента функции getrefcount().

sys.getrecursionlimit()

Возвращает текущее значение предела рекурсии, максимальную глубину стека интерпретатора Python. Этот предел предотвращает бесконечную рекурсию, вызывающую переполнение стека C и сбой Python. Его можно установить с помощью setrecursionlimit().

END_OF_DOCUMENT_MARKER
sys.getsizeof(object[, default])

Возвращает размер объекта в байтах. Объект может быть любого типа. Все встроенные объекты вернут правильные результаты, но это не обязательно должно быть справедливо для расширений сторонних разработчиков, поскольку это зависит от реализации.

Учитывается только потребление памяти, непосредственно связанное с объектом, а не потребление памяти объектов, на которые он ссылается.

Если задано default, оно будет возвращено, если объект не предоставляет способ получить размер. В противном случае будет поднято исключение TypeError.

getsizeof() вызывает метод объекта __sizeof__ и добавляет дополнительную нагрузку сборщика мусора, если объект управляется сборщиком мусора.

См. рецепт рекурсивного sizeof для примера использования getsizeof() рекурсивно для поиска размера контейнеров и всех их содержимых.

sys.getswitchinterval()

Возвращает «интервал переключения потоков» интерпретатора; см. setswitchinterval().

Добавлена в версии 3.2.

sys._getframe([depth])

Возвращает объект фрейма из стека вызовов. Если задан необязательный целое число depth, возвращает объект фрейма, расположенный на заданную глубину вызовов ниже вершины стека. Если эта глубина превышает глубину стека вызовов, будет поднято исключение ValueError. По умолчанию depth равен нулю, что возвращает фрейм на вершине стека вызовов.

Вызывает событие аудита sys._getframe без аргументов.

Подробность реализации 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(); см. документацию Microsoft по OSVERSIONINFOEX() для получения дополнительной информации об этих полях.

platform_version возвращает основную версию, второстепенную версию и номер сборки текущей операционной системы, а не версию, которая эмулируется для процесса. Она предназначена для использования в журнале, а не для обнаружения функций.

Примечание

platform_version получает версию из kernel32.dll, которая может быть другой версии, чем версия ОС. Для получения точной версии ОС используйте модуль platform.

Доступность: 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, bytes и memoryview

hash_bits

внутренний размер выходных данных алгоритма хэширования

seed_bits

размер ключа-затравки алгоритма хэширования

Добавлена в версии 3.2.

Изменено в версии 3.4: Добавлены algorithm, hash_bits и seed_bits

sys.hexversion

Номер версии, закодированный как целое число. Гарантируется, что он будет увеличиваться с каждой версией, включая надлежащую поддержку нерелизных версий. Например, чтобы проверить, что интерпретатор Python не ниже версии 1.5.2, используйте:

if sys.hexversion >= 0x010502F0:
    # use some advanced feature
    ...
else:
    # use an alternative implementation or warn the user
    ...

Это называется hexversion , так как оно действительно приобретает смысл только при использовании с встроенной функцией hex(). Кортеж с именами sys.version_info можно использовать для более удобной для человека записи той же информации.

Дополнительные сведения о hexversion можно найти в API и ABI версии.

sys.implementation

Объект, содержащий информацию об реализации текущей интерпретатора Python. Следующие атрибуты должны существовать во всех реализациях Python.

name — идентификатор реализации, например, 'cpython'. Фактическая строка определена реализацией Python, но гарантируется, что она будет в нижнем регистре.

version — именованная кортеж, в том же формате, что и sys.version_info. Она представляет версию реализации Python. Это имеет разное значение от конкретной версии языка Python, которой соответствует текущая интерпретатор, который sys.version_info представляет. Например, для PyPy 1.8 sys.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, используемого для представления разряда

default_max_str_digits

Значение по умолчанию для sys.get_int_max_str_digits(), если оно не настроено явно.

str_digits_check_threshold

минимальное ненулевое значение для sys.set_int_max_str_digits(), PYTHONINTMAXSTRDIGITS, или -X int_max_str_digits.

Новое в версии 3.1.

Изменено в версии 3.8.14: Добавлены default_max_str_digits и str_digits_check_threshold.

sys.__interactivehook__

Если этот атрибут существует, его значение автоматически вызывается (без аргументов) при запуске интерпретатора в интерактивном режиме. Это выполняется после чтения файла PYTHONSTARTUP, чтобы вы могли установить этот хук там. Модуль site устанавливает это.

Вызывает событие аудита cpython.run_interactivehook с объектом хука в качестве аргумента при вызове хука при запуске.

Новое в версии 3.4.

sys.intern(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

Целое число, задающее значение наибольшего кода Unicode, т. е. 1114111 (0x10FFFF в шестнадцатеричном формате).

Изменено в версии 3.3: До PEP 393, sys.maxunicode обычно было либо 0xFFFF или 0x10FFFF, в зависимости от параметра конфигурации, который определял, хранились ли символы Unicode как 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 на поиск модулей сначала в текущем каталоге. Обратите внимание, что каталог сценария вставляется перед элементами, добавленными в результате установки PYTHONPATH.

Программа может свободно изменять этот список в своих целях. В список sys.path должны добавляться только строки и байты; все другие типы данных игнорируются во время импорта.

См. также

Модуль site. В нём описывается использование файлов .pth для расширения sys.path.

sys.path_hooks

Список вызываемых функций, которые принимают путь в качестве аргумента для попытки создания поисковика для этого пути. Если поисковик может быть создан, он возвращается вызываемой функцией, иначе возникает исключение ImportError.

Изначально указано в PEP 302.

sys.path_importer_cache

Словарь, используемый в качестве кэша для объектов поисковиков. Ключами являются пути, которые были переданы в sys.path_hooks, а значениями — найденные поисковики. Если путь является корректным путем к файловой системе, но поисковик не найден в sys.path_hooks, то в словарь записывается None.

Изначально указано в PEP 302.

Изменено в версии 3.3: Вместо imp.NullImporter теперь хранится None, когда поисковик не найден.

sys.platform

Эта строка содержит идентификатор платформы, который можно использовать для добавления платформоспецифичных компонентов в sys.path, например.

Для Unix-систем, за исключением Linux и AIX, это строка с именем операционной системы в нижнем регистре, как возвращается uname -s с первой частью версии, возвращаемой uname -r, например, 'sunos5' или 'freebsd8', в момент построения Python. Поэтому рекомендуется использовать следующий фрагмент кода, если вы не хотите тестировать для определённой версии системы:

if sys.platform.startswith('freebsd'):
    # FreeBSD-specific code here...
elif sys.platform.startswith('linux'):
    # Linux-specific code here...
elif sys.platform.startswith('aix'):
    # AIX-specific code here...

Для других систем значения следующие:

Система

значение platform

AIX

'aix'

Linux

'linux'

Windows

'win32'

Windows/Cygwin

'cygwin'

macOS

'darwin'

Изменено в версии 3.3: На Linux, sys.platform больше не содержит номер основной версии. Она всегда равна 'linux', а не 'linux2' или 'linux3'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать приведенный выше фрагмент кода.

Изменено в версии 3.8: На AIX, sys.platform больше не содержит номер основной версии. Она всегда равна 'aix', а не 'aix5' или 'aix7'. Поскольку более старые версии Python включают номер версии, рекомендуется всегда использовать приведенный выше фрагмент кода.

См. также

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

Строки, определяющие первичный и вторичный приглашения интерпретатора. Они определены только если интерпретатор находится в интерактивном режиме. Их начальные значения в этом случае — '>>> ' и '... '. Если переменной присвоено значение, отличное от строки, её str() переоценивается каждый раз, когда интерпретатор готовится к чтению новой интерактивной команды; это можно использовать для реализации динамического приглашения.

END_OF_DOCUMENT_MARKER
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).

Доступность: Unix.

sys.set_int_max_str_digits(n)

Установите ограничение длины преобразования целых чисел в строку, используемое этой интерпретацией. См. также get_int_max_str_digits().

Введено в версии 3.8.14.

sys.setprofile(profilefunc)

Установите системную функцию профилирования, которая позволяет реализовать профайлер кода Python на языке Python. Подробнее о профайлере Python см. главу Профилирование в Python. Системная функция профилирования вызывается аналогично системной функции отслеживания (см. settrace()), но вызывается с другими событиями, например, не вызывается для каждой исполняемой строки кода (только при вызове и возврате, но событие возврата сообщается даже при возникновении исключения). Функция специфична для потока, но профайлеру не известно о переключениях контекста между потоками, поэтому её использование в многопоточной среде не имеет смысла. Кроме того, её возвращаемое значение не используется, поэтому она может просто вернуть None. Ошибка в функции профилирования приведёт к её отмене.

Функции профилирования должны иметь три аргумента: frame, event и arg. frame — текущая кадр стека. event — строка: 'call', 'return', 'c_call', 'c_return', или 'c_exception'. arg зависит от типа события.

Вызывает событие аудита sys.setprofile без аргументов.

События имеют следующее значение:

'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.

END_OF_DOCUMENT_MARKER
sys.settrace(tracefunc)

Устанавливает функцию отслеживания системы, которая позволяет реализовать отладчик кода Python на языке 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; возвращаемое значение определяет новую локальную функцию отслеживания. События по операторам по умолчанию не генерируются: они должны быть явно запрошены, установив f_trace_opcodes в True в кадре.

Обратите внимание, что при распространении исключения по цепочке вызывающих функций, в каждом уровне генерируется событие 'exception'.

Для более тонкой настройки можно установить функцию отслеживания, явно присвоив frame.f_trace = tracefunc, а не полагаясь на то, что она будет установлена косвенно через возвращаемое значение уже установленной функции отслеживания. Это также необходимо для активации функции отслеживания в текущем кадре, чего settrace() не делает. Обратите внимание, что для работы функции отслеживания должна быть установлена глобальная функция отслеживания с помощью settrace(), чтобы включить механизм отслеживания в ходе выполнения программы, но это может быть не та же функция отслеживания (например, это может быть функция отслеживания с низкой нагрузкой, которая просто возвращает None для отключения отслеживания немедленно в каждом кадре).

Для получения дополнительной информации об объектах кода и кадрах обратитесь к Стандартной иерархии типов.

Вызывает событие отладки sys.settrace без аргументов.

Детали реализации CPython: Функция settrace() предназначена только для реализации отладчиков, профилировщиков, инструментов покрытия и т. п. Ее поведение является частью платформы реализации, а не частью определения языка, и поэтому может быть недоступно во всех реализациях Python.

Изменено в версии 3.7: Добавлен тип события 'opcode'; добавлены атрибуты f_trace_lines и f_trace_opcodes к кадрам

sys.set_asyncgen_hooks(firstiter, finalizer)

Принимает два необязательных ключевых аргумента, которые являются вызываемыми объектами, принимающими итератор асинхронного генератора в качестве аргумента. Вызываемый объект firstiter будет вызван при первом итерации асинхронного генератора. Вызываемый объект finalizer будет вызван, когда асинхронный генератор собирается быть удален сборщиком мусора.

Вызывает событие отладки sys.set_asyncgen_hooks_firstiter без аргументов.

Вызывает событие отладки sys.set_asyncgen_hooks_finalizer без аргументов.

Вызывается два события отладки, потому что базовая 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 объектов корутин будет содержать кортеж кортежей (имя_файла, номер_строки, имя_функции), описывающих стек вызовов, где был создан объект корутины, при этом самый последний вызов будет первым. При отключении cr_origin будет None.

Для включения укажите значение depth больше нуля; это задает количество кадров, информация о которых будет захвачена. Для отключения установите depth в ноль.

Это настройка специфична для потока.

Добавлена в версии 3.7.

Примечание

Эта функция была добавлена на временной основе (см. PEP 411 для получения подробностей). Используйте ее только для отладки.

sys._enablelegacywindowsfsencoding()

Изменяет кодировку и режим ошибок по умолчанию для файловой системы на ‘mbcs’ и ‘replace’ соответственно, для согласованности с версиями Python до 3.6.

Это эквивалентно определению переменной среды PYTHONLEGACYWINDOWSFSENCODING до запуска Python.

Доступность: Windows.

Добавлена в версии 3.6: См. PEP 529 для получения дополнительной информации.

END_OF_DOCUMENT_MARKER
sys.stdin
sys.stdout
sys.stderr

Файловые объекты, используемые интерпретатором для стандартного ввода, вывода и ошибок:

  • stdin используется для всего интерактивного ввода (включая вызовы input());
  • stdout используется для вывода print() и операторов выражения и для запросов input();
  • Собственные подсказки интерпретатора и сообщения об ошибках отображаются в stderr.

Эти потоки — обычные текстовые файлы, такие как те, что возвращает функция open(). Их параметры выбираются следующим образом:

  • Кодировка символов зависит от платформы. На платформах, не являющихся Windows, используется кодировка локали (см. locale.getpreferredencoding()).

    В Windows используется UTF-8 для устройства консоли. Устройства, не обрабатывающие символы, такие как файлы дисков и каналы, используют кодировку системы локали (то есть кодовую страницу ANSI). Устройства, не обрабатывающие символы в консоли, такие как NUL (то есть, где isatty() возвращает True соответственно для stdin и stdout/stderr) используют значения кодовых страниц консольного ввода и вывода при запуске. По умолчанию это кодировка системы локали, если процесс изначально не подключен к консоли.

    Специальное поведение консоли может быть переопределено путём установки переменной окружения 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

Имя и версия библиотеки потоков. Это строка или 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_msg — None.

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

Версия API C для этой интерпретации. Программисты могут найти это полезным при отладке конфликтов версий между 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 для получения дополнительной информации о механизме предупреждений.

END_OF_DOCUMENT_MARKER
sys.winver

Номер версии, используемый для формирования ключей реестра в платформах Windows. Он хранится в виде строкового ресурса 1000 в DLL Python. Значение обычно состоит из первых трех символов version. Он предоставляется в модуле sys для справочных целей; изменение этого значения не влияет на ключи реестра, используемые Python.

Доступность: 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.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.8/library/sys.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API