Модуль sys в Python

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

import sys

В этом материале речь пойдет о следующих возможностях модуля sys:

  1. sys.argv
  2. sys.maxsize
  3. sys.path
  4. sys.version
  5. sys.exit

sys.argv

Метод argv возвращает аргументы командной строки, переданные скрипту Python, в виде списка. Важно отметить, что первый аргумент (с индексом 0) в списке — это название самого скрипта. Остальные представлены в виде последовательности.

В следующем примере файл с кодом называется test.py.

Время для примера:

import sys

print("Привет {}. Добро пожаловать в руководство по  {} на {}".format(sys.argv[1], sys.argv[2], sys.argv[3]))

Сохраните этот код в файле test.py и запустите его в командной строке вместе со следующими аргументами:

python test.py Студенты sys PythonRu

Перед этим необходимо перейти в директорию с файлом или ввести полный абсолютный путь к нему.

В указанной выше команде первым аргументом функции argv является элемент Студенты. sys и PythonRu — второй и третий аргументы.

Нулевым параметром является название самого скрипта, которое командная строка определяет автоматически.

Вывод:

Привет Студенты. Добро пожаловать в руководство по sys на PythonRu

sys.maxsize

Эта функция возвращает целое число, которое обозначает, какое максимально значение может иметь переменная типа Py_ssize_t в программе Python. Это значение зависит от платформы, где программа была запущена. Если это 32-битная платформа, значение обычно 2*33 — 1 (2147483647), а в 64-битной — 2**63 — 1 (9223372036854775807).

Пример (обновите код в test.py):

import sys
     
print(sys.maxsize)

Вывод:

9223372036854775807

sys.path

Метод path из модуля sys возвращает все пути для поиска модулей Python. Формат вывода — список строк.

Ту же операцию можно выполнить обратившись к переменным среды в панели управления и найдя в ней PYTHONPATH. Первый элемент вывода — расположение исполняемого скрипта. Если же эта директория недоступна, то первый элемент будет пустой.

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

Пример:

import sys

print(sys.path)

Вывод:
['C:\\Users\\user_name, 'C:\\Users\\ user_name \\Anaconda3\\pkgs\\nb_anacondacloud-1.2.0-py35_0\\Lib\\site-packages\\nb_anacondacloud-1.2.0-py3.5.egg-info', 'C:\\Users\\ user_name \\AppData\\Local\\Programs\\Python\\Python36\\python.exe', 'C:\\ProgramData\\Anaconda3\\DLLs', 'C:\\ProgramData\\Anaconda3\\lib', 'C:\\ProgramData\\Anaconda3', '', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\win32\\lib', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\Pythonwin', 'C:\\ProgramData\\Anaconda3\\lib\\site-packages\\IPython\\extensions', 'C:\\Users\\ user_name \\.ipython']

sys.version

Этот метод показывает версию интерпретатора Python. Он также предоставляет информацию о номере сборки и компиляторе. Информация отображается в виде строки. Рекомендуется использовать метод version_info для получения информации о версии, а не извлекать ее из вывода sys.version.

Пример:

import sys

print(sys.version)

Вывод:

 3.7.2 (tags/v3.7.2:9a3ffc0492, Dec 23 2018, 23:09:28) [MSC v.1916 64 bit (AMD64)]

sys.exit

Метод exit выходит из программы Python или завершает конкретный процесс. Он используется для безопасного завершения программы в случае исключения. Под капотом sys.exit вызывает исключение SystemExit. Это то же самое, что exit или quit в Python.

При вызове SystemExit также исполняются функции блока finally из инструкции try.

Этот метод может включать опциональный аргумент. Его значение по умолчанию равно 0, что значит, что программа была завершена нормально. Если значение отличается, это говорит о не-нормальном завершении.

Пример:

import sys

sys.exit()
sys.exit(0)

Выводы:

В этом материале вы познакомились с базовыми методами из модуля sys, которые помогают взаимодействовать со средой исполнения Python.