прямая стандартная ошибка в тот же файл и стандартный вывод? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть что-то вроде

f=open('out.txt','w')
print >>f,  'action=%r'%action

в одной из моих программ на Python.Можно ли направить стандартную ошибку в тот же файл, что и стандартный вывод?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Вы могли бы сделать это ...

import sys

f = open("error.log", "w")
sys.stderr = f            
print "raising exception"
raise Exception, "find this in error.log"

Или, чтобы ответить на ваш вопрос более прямо,

import sys
f = open("logall.txt", "w")
sys.stderr = f
sys.stdout = f
print "find this in logall.txt"
raise Exception, "find this in logall.txt"

Хотя я не обязательно рекомендую последнее.

1 голос
/ 02 февраля 2011

Вы могли бы просто сказать это:

sys.stderr = sys.stdout

Но я бы поспорил, если ваш сценарий когда-нибудь будет поддерживаться кем-то другим, вы можете вызвать некоторую путаницу. Вместо того, чтобы делать это внутри скрипта, было бы приемлемым решением сделать это из вызывающей оболочки?

myscript 2>&1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...