> For the complete documentation index, see [llms.txt](https://kaze.gitbook.io/qa-theory/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/sys-i-ego-metody.md).

# Sys и его методы

### **1. Что такое `sys`**

* `sys` — встроенный модуль Python для взаимодействия с **интерпретатором Python** и системными ресурсами.
* Позволяет управлять путями поиска модулей, аргументами командной строки, завершением программы, потоками ввода/вывода и др.

```python
import sys
```

***

### **2. Основные возможности и методы**

#### **2.1 Аргументы командной строки**

```python
# python script.py arg1 arg2
print(sys.argv)  
# ['script.py', 'arg1', 'arg2']
```

* `sys.argv[0]` — имя скрипта
* Остальные элементы — переданные аргументы

***

#### **2.2 Информация о версии Python**

```python
print(sys.version)        # Полная строка с версией Python
print(sys.version_info)   # Кортеж (major, minor, micro, releaselevel, serial)
```

***

#### **2.3 Завершение программы**

```python
sys.exit(0)   # Завершить программу с кодом 0
sys.exit(1)   # Завершить с ошибкой
```

***

#### **2.4 Пути поиска модулей**

```python
print(sys.path)           # Список директорий для поиска модулей
sys.path.append('/my/path')  # Добавить путь к поиску модулей
```

***

#### **2.5 Потоки ввода/вывода**

```python
sys.stdin     # стандартный ввод
sys.stdout    # стандартный вывод
sys.stderr    # стандартный поток ошибок

sys.stdout.write("Hello\n")  # вывод без \n автоматически
```

***

#### **2.6 Ресурсы интерпретатора**

```python
print(sys.platform)        # OS-платформа ('win32', 'linux', 'darwin')
print(sys.executable)     # путь к интерпретатору Python
print(sys.getrecursionlimit())  # текущий лимит рекурсии
sys.setrecursionlimit(2000)     # изменить лимит рекурсии
```

***

#### **2.7 Проверка используемой памяти/объектов**

```python
import sys
x = [1,2,3]
print(sys.getsizeof(x))  # размер объекта в байтах
```

***

### **3. Применение в автоматизации тестирования**

* Получение **аргументов тестов из командной строки** (например, pytest).
* Настройка путей для импорта тестовых модулей.
* Логирование ошибок через `sys.stderr`.
* Завершение теста при критической ошибке через `sys.exit()`.
* Управление лимитом рекурсии для тестов с рекурсивными функциями.

```python
import sys

if len(sys.argv) < 2:
    sys.exit("Не указан путь к тестовым данным")
```
