Модуль sys

Обновлено: 2024-03-12
2 мин

Содержание

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

sys.argv - список аргументов командной строки, переданных в программу при ее запуске. Первым аргументом обычно является имя файла программы.

sys.executable - путь к интерпретатору Python, который используется для запуска текущей программы.

sys.exit([arg]) - завершает выполнение программы. Если задан аргумент, то он возвращается в качестве кода выхода.

sys.modules - словарь, содержащий все загруженные модули Python, включая стандартные и сторонние модули.

sys.path - список путей поиска модулей Python. Включает директории, содержащие стандартные модули, а также директории, перечисленные в переменной окружения PYTHONPATH.

sys.platform - строка, содержащая название операционной системы, на которой запущен Python.

sys.stdin, sys.stdout, sys.stderr - объекты для взаимодействия со стандартными потоками ввода/вывода.

Мы можем использовать sys.argv для получения доступа к аргументам командной строки:

import sys

# Запуск: python my_program.py arg1 arg2
print(sys.argv)  # ['my_program.py', 'arg1', 'arg2']

Атрибут sys.executable может быть полезен, если требуется запустить текущую программу с другим интерпретатором Python:

import sys
import subprocess

if 'win' in sys.platform:
    python_executable = 'python.exe'
else:
    python_executable = 'python'

subprocess.call([python_executable, 'my_program.py'])

sys.exit() используется для выхода из программы. Можно передать ей код возврата в качестве аргумента, который будет использоваться для определения статуса выхода:

import sys

if len(sys.argv) < 2:
    print('Please specify a file to read')
    sys.exit(1)

filename = sys.argv[1]

# Чтение файла...

Мы можем использовать sys.modules для получения списка всех загруженных модулей:

import sys

for name, module in sys.modules.items():
    print(name)

Константы sys.stdin, sys.stdout и sys.stderr являются стандартными потоками ввода, вывода и ошибок соответственно.

Например, если мы хотим написать программу, которая запрашивает у пользователя ввод и выводит результат на экран, мы можем использовать sys.stdin и sys.stdout:

import sys

name = input("What is your name? ")
sys.stdout.write(f"Hello, {name}!\n")

Здесь мы запрашиваем у пользователя ввод с помощью функции inp() и выводим результат на экран с помощью sys.stdout.write().

Аналогично, мы можем перенаправить вывод в файл, например:

import sys

with open('output.txt', 'w') as f:
    sys.stdout = f
    print('Hello, world!')

Здесь мы перенаправляем стандартный вывод в файл “output.txt” с помощью операции присваивания sys.stdout = f. Далее, когда мы вызываем функцию print(), результат будет записан в файл вместо вывода на экран.