Перенаправить стандартный вывод в файл в Python?

Как перенаправить stdout в произвольный файл в Python?

Когда долго выполняющийся скрипт Python (например, веб-приложение) запускается из сеанса ssh и запускается в фоновом режиме, а сеанс ssh закрывается, приложение вызовет ошибку IOError и завершится ошибкой в ​​момент попытки записи в stdout. Мне нужно было найти способ сделать вывод приложения и модулей в файл, а не стандартный вывод, чтобы предотвратить сбой из-за ошибки IOError. В настоящее время я использую nohup для перенаправления вывода в файл, и это выполняет свою работу, но мне было интересно, из любопытства, есть ли способ сделать это без использования nohup.

Я уже пробовал sys .stdout = open ('somefile', 'w') , но, похоже, это не мешает некоторым внешним модулям по-прежнему выводить на терминал (или, может быть, строка sys.stdout = ... совсем не стрелял). Я знаю, что это должно работать из более простых сценариев, которые я тестировал, но я также не У меня еще нет времени протестировать веб-приложение.

285
задан Eric Leschinski 5 October 2015 в 05:17
поделиться