2013-04-07 14 views
8

W moim programie jest wiele funkcji print (python 2.7). Czy jest jakiś sposób dodać kilka linii, a następnie wszystkie dane wyjściowe można przekierować na stderr? Potrzebuję kodów Pythona, ale nie linuksa.W python, czy mogę przekierować wyjście funkcji drukowania na stderr?

Na przykład, mój program jest podobny:

print 'hello world' 

chciałbym dodać kilka kodów, takich jak:

redirect_output_to_stderr() 
print 'hello world' 

Wtedy wszystko wyjście może zostać przekierowany do stderr.

Wiem, że mogę osiągnąć mój cel, ale czy może to zapobiec modyfikowaniu istniejących kodów?

+1

_tylko_ sposób to zrobić _bez modyfikujące kod_ polega na użyciu poleceń przekierowania powłoki. –

+0

Och, myślę, że to, czego potrzebuję, to uniemożliwienie zmodyfikowania istniejących funkcji 'print'. Dziękuję, że o tym wspomniałeś :) – waitingkuo

Odpowiedz

7

Czy to w metodzie:

import sys 
sys.stdout = sys.stderr 
2

Weryfikacja print jest cechą Python 3+. Możesz jednak zmienić sys.stdout na std.stderr.

Patrz: another question

+2

Ty * możesz * przedefiniować 'print' w 2.7, jeśli robisz' from __future__ import print_function'. – lvc

+0

@ Vvc Nie wiedziałem tego. Nadal zmiana 'stdout' jest krótsza niż redefinicja funkcji. – kravemir

16

W Pythonie 2.7 można zrobić:

import sys 

print >> sys.stderr, "To stderr." 

Albo można importować zachowanie od 3.x:

from __future__ import print_function 
import sys 

print('To stderr.', file=sys.stderr) 
Powiązane problemy