Вбудований модуль sys у Python, надає доступ до змінних і функцій, що використовуються у середовищі виконання (інтерпретаторі) Python.

Перед початком роботи з модулем sys, потрібно його імпортувати:

import sys

Аргументи командного рядка

Модуль sys надає доступ до аргументів командного рядка, через атрибут argv. Приклад використання sys.argv:

import sys

print('Script:', sys.argv[0])
print('Arguments:', sys.argv[1:])

У цьому прикладі, sys.argv[0] містить шлях до скрипта (модуля Python) котрий запускається на виконання, а sys.argv[1:] список аргументів командного рядка.

Якщо зберегти код з прикладу вище у модулі main.py, та спробувати запустити його через командний рядок наступною командою:

python main.py arg_1 arg_2

Буде отримано наступний результат:

Script: main.py
Arguments: ['arg_1', 'arg_2']

Це може бути корисним для створення CLI (Command Line Interface) інструментів, коли є потреба обробляти параметри задані користувачем.

Версія Python

Версію Python що використовується оточенням для виконання поточної програми, можна отримати за допомогою атрибуту version:

import sys

print('Python version:', sys.version)
# Python version: 3.10.11 ...

Шляхи до модулів Python

Атрибут path дозволяє отримати список рядків, котрі містять шляхи пошуку модулів Python (ініціалізація відбувається зі змінної оточення PYTHONPATH під час запуску програми):

import sys

print('Python path:', sys.path)

Також є можливість додавати нові каталоги до шляхів пошуку, вже під час виконання програми, використовуючи функцію append():

sys.path.append('/path/to/directory')

Вихід з програми

Модуль sys надає функцію exit(), яка дає змогу завершити виконання програми із зазначеним кодом (корисно для визначення статусу виходу). Приклад:

import sys

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

file_name = sys.argv[1]

# Read file code ...

Робота з I/O

Модуль sys дає змогу взаємодіяти зі стандартними потоками вводу, виводу та помилок:

  • sys.stdin – стандартний потік вводу
  • sys.stdout – стандартний потік виводу
  • sys.stderr – стандартний потік помилок

Простий приклад перенаправлення виводу програми у файл:

import sys

original_stdout = sys.stdout

with open('output.txt', 'w') as file:
    sys.stdout = file
    print('This will be written to file.')


sys.stdout = original_stdout
print('This will be printed to console.')