Spec-Zone.ru › Python 3.9

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

Эта функция вызывается при отображении результата вычисления выражения, введённого в интерактивной сессии 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

Если это True, 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). Их смысл: 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])

Вызвать исключение SystemExit, сигнализируя об намерении завершить работу интерпретатора.

Необязательный аргумент arg может быть целым числом, задающим код завершения (по умолчанию ноль), или другим типом объекта. Если это целое число, ноль считается «успешным завершением», а любое ненулевое значение — «аварийным завершением» оболочками и т. п. Большинство систем требуют, чтобы оно было в диапазоне от 0 до 127, в противном случае поведение неопределённо. Некоторые системы используют конвенцию для присвоения определенных значений определенным кодам завершения, но они обычно не разработаны; программы Unix обычно используют 2 для ошибок синтаксиса командной строки и 1 для всех других видов ошибок. Если передается объект другого типа, None эквивалентно передаче нуля, а любой другой объект выводится в stderr и приводит к коду завершения 1. В частности, sys.exit("some error message") — это быстрый способ выхода из программы при возникновении ошибки.

Поскольку exit() в конечном счете «только» вызывает исключение, он завершит процесс только при вызове из основного потока, и исключение не перехватывается. Действия очистки, указанные в блоках finally операторов try, выполняются, и есть возможность перехватить попытку выхода на внешнем уровне.

Изменено в версии 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 (Режим разработки Python)

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 для нового режима разработки Python и атрибут utf8_mode для нового флага -X utf8.

Изменено в версии 3.9.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

См. также math.ulp().

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

Используйте math.ulp(0.0), чтобы получить наименьшее положительное денормализованное представимое 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() ведёт себя для чисел с плавающей запятой. Если строка имеет значение '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.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.9.14.

sys.getrefcount(object)

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

sys.getrecursionlimit()

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

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.

END_OF_DOCUMENT_MARKER
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.9.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.platlibdir

Имя платформоспецифичного каталога библиотек. Используется для построения путей стандартной библиотеки и путей установленных расширений модулей.

На большинстве платформ он равен "lib". На Fedora и SuSE он равен "lib64" на 64-битных платформах, что даёт следующие пути sys.path (где X.Y — версия Python major.minor):

  • /usr/lib64/pythonX.Y/: Стандартная библиотека (как os.py из модуля os)
  • /usr/lib64/pythonX.Y/lib-dynload/: Модули расширения C стандартной библиотеки (как модуль errno, точное имя файла зависит от платформы)
  • /usr/lib/pythonX.Y/site-packages/ (всегда используйте lib, а не sys.platlibdir): Модули сторонних разработчиков
  • /usr/lib64/pythonX.Y/site-packages/: Модули расширения C сторонних пакетов

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

sys.prefix

Строка, задающая префикс каталога, специфичный для сайта, где установлены независимые от платформы файлы Python; в Unix по умолчанию это '/usr/local'. Это можно установить во время сборки, используя аргумент --prefix скрипта configure. См. Пути установки для полученных путей.

Примечание

Если активна виртуальная среда виртуальная среда, это значение будет изменено в site.py для указания на виртуальную среду. Значение для установки Python по-прежнему будет доступно через base_prefix.

sys.ps1
sys.ps2

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

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.9.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 или установив переменную окружения PYTHONUNBUFFERED.

Изменено в версии 3.9: Неинтерактивный stderr теперь имеет построчную буферизацию вместо полной буферизации.

Примечание

Для записи или чтения двоичных данных из/в стандартные потоки используйте лежащий в основе двоичный 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

Версия 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: Добавлены атрибуты компонент с именами.

END_OF_DOCUMENT_MARKER
sys.warnoptions

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

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.9/library/sys.html

Spec-Zone.ru

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