Каким способом можно записать вывод команды 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. Сначала с помощью <b>original_stdout = sys.stdout </b> сохранил оригинальный вывод, чтобы можно было к нему вернуться. Далее изменил вывод программы в файл <b>sys.stdout = text_file</b> . После того, как закончил писать в файл, изменил вывод на стандартный <b>sys.stdout = original_stdout</b> . <br/> <br/> <pre><code class="python">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()</code></pre>
Похожие вопросы