Как изменить направление стандартных потоков во время выполнения программы?

Как перенаправить стандартные потоки в запускаемую программу при указании полного пути до файла со скриптом?
  • 13 февраля 2024 г. 17:38
Ответы на вопрос 2
Для изменения направления стандартных потоков во время выполнения программы в Python можно использовать модуль `sys`. 

Чтобы перенаправить стандартный поток вывода, можно использовать метод `sys.stdout`, а для перенаправления стандартного потока ввода - метод `sys.stdin`. 

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

```python
import sys

# Открываем файл для записи
sys.stdout = open('output.txt', 'w')

# Все выводимые данные будут записаны в файл

# Пример вывода
print('Hello, World!')

# Закрываем файл
sys.stdout.close()

# Возвращаем стандартный поток вывода
sys.stdout = sys.__stdout__
```

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

```python
import sys

# Открываем файл для чтения
sys.stdin = open('input.txt', 'r')

# Читаем данные из файла

# Пример чтения
data = sys.stdin.readline()

# Выводим данные
print(data)

# Закрываем файл
sys.stdin.close()

# Возвращаем стандартный поток ввода
sys.stdin = sys.__stdin__
```

Чтобы перенаправить стандартные потоки в запускаемую программу при указании полного пути до файла со скриптом, можно воспользоваться командой командной строки `python` или `python3` с аргументом `- <file_name>`, где `<file_name>` - полный путь до файла со скриптом.

Например:

```
python - <path_to_script.py>
```
Дезинформировал, прошу прощения. Логирование было и ошибка была в пути к script.py (нужен был абсолютный). Перенаправление потоков работает и так.
Похожие вопросы