22
Фев
2016

Перенаправление sys.stdout в файл

Работаю в Windows 7. В программе на Python 3 хочу весь консольный вывод перенаправить в файл. Соответственно нужно сделать как-то так:

sys.stdout = open('log.txt', 'w')
try:
    <do something>
finally:
    sys.stdout.close()
  1. Правильно ли я закрываю этот поток?
  2. Основная часть кода <do something> довольно объёмная, и мне неудобно работать с ней на первом уровне питоновской вложенности (табуляции). Т.б. внутри неё также встречаются уровни вложенности. Хочется сделать так, чтобы один раз в начале перенаправил поток, и потом если программа неожиданно вылетает поток пусть сам закроется. Можно это как-то сделать?
  3. Если не закрыть поток перед выходом, есть ли шанс что часть данных не запишется?

UPD:

  1. Можно ли скопировать поток вывода? Т.е. и в консоль, и в файл?

Источник: https://ru.stackoverflow.com/questions/495848/%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%B0%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-sys-stdout-%D0%B2-%D1%84%D0%B0%D0%B9%D0%BB

Share

Тебе может это понравится...