Каким способом можно записать вывод команды print в файл при использовании Python?

Как можно сохранить строки с использованием форматирования, аналогичного функции `print()`, в файл `text_file`, вместо использования метода `.write()`?
  • 15 февраля 2024 г. 15:28
Ответы на вопрос 2
Для записи вывода команды `print` в файл в Python вы можете перенаправить стандартный поток вывода в файловый объект. 
Вот пример:

```python
with open('output.txt', 'w') as f:
    print('Привет, мир!', file=f)
```

В этом примере команда `print` выводит строку `'Привет, мир!'` в файл `output.txt`. Аргумент `file=f` говорит `print` записывать вывод в файловый объект `f` вместо стандартного потока вывода.

Если вы хотите сохранить строки с использованием форматирования, аналогичного функции `print()`, в файл `text_file`, можно воспользоваться методом `str.format()` для форматирования строк перед их записью с помощью метода `.write()`:

```python
name = 'Alice'
age = 25

with open('text_file.txt', 'w') as file:
    file.write('Имя: {}\n'.format(name))
    file.write('Возраст: {}\n'.format(age))
```

Здесь метод `.write()` используется для записи строк, отформатированных с помощью `str.format()`, в файл `text_file.txt`.
Использовал модуль sys. Сначала с помощью original_stdout = sys.stdout  сохранил оригинальный вывод, чтобы можно было к нему вернуться. Далее изменил вывод программы в файл sys.stdout = text_file . После того, как закончил писать в файл, изменил вывод на стандартный sys.stdout = original_stdout . 

import sys

text_file = open('Index.txt', 'w')
original_stdout = sys.stdout
sys.stdout = text_file
for key in sorted(word_freq.keys()):
    print(f'{key}: ', end='')
    print(*word_freq[key])
sys.stdout = original_stdout
text_file.close()
Похожие вопросы