# 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("Не указан путь к тестовым данным")
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://kaze.gitbook.io/qa-theory/osnovy-programmirovaniya-na-python/sys-i-ego-metody.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
