2011-02-02 20 views
1

私はPythonプログラムの一つで同じファイルと標準出力に直接標準エラーがありますか?

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

のようなものを持っています。標準エラーを標準出力と同じファイルに送ることは可能ですか?

ありがとうございます!私は必ずしも後者をお勧めしませんが、あなたがこれを行うことができます

答えて

2

...

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" 

+0

なぜお勧めしませんか? – reckoner

+0

ファイルに書きたい場合は、すべてのprint文に影響を与えるsys.stdout = fのようなグローバルな変更を行うのではなく、f.write()を使って直接そのファイルに書き込む方がよいと思います。おそらく私の意見です。 – senderle

1

あなたはこの言うかもしれない:

sys.stderr = sys.stdout 

をしかし、私はあなたのスクリプトは、これまで他の誰かによって維持されるならば、あなたはいくつかの混乱を引き起こす可能性がある賭ける思います。これをスクリプトの中で行うのではなく、呼び出すシェルから行うのは受け入れられる解決策でしょうか?

myscript 2>&1 
関連する問題