私はPythonプログラムの一つで同じファイルと標準出力に直接標準エラーがありますか?
f=open('out.txt','w')
print >>f, 'action=%r'%action
のようなものを持っています。標準エラーを標準出力と同じファイルに送ることは可能ですか?
ありがとうございます!私は必ずしも後者をお勧めしませんが、あなたがこれを行うことができます
私はPythonプログラムの一つで同じファイルと標準出力に直接標準エラーがありますか?
f=open('out.txt','w')
print >>f, 'action=%r'%action
のようなものを持っています。標準エラーを標準出力と同じファイルに送ることは可能ですか?
ありがとうございます!私は必ずしも後者をお勧めしませんが、あなたがこれを行うことができます
...
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"
。
あなたはこの言うかもしれない:
sys.stderr = sys.stdout
をしかし、私はあなたのスクリプトは、これまで他の誰かによって維持されるならば、あなたはいくつかの混乱を引き起こす可能性がある賭ける思います。これをスクリプトの中で行うのではなく、呼び出すシェルから行うのは受け入れられる解決策でしょうか?
myscript 2>&1
なぜお勧めしませんか? – reckoner
ファイルに書きたい場合は、すべてのprint文に影響を与えるsys.stdout = fのようなグローバルな変更を行うのではなく、f.write()を使って直接そのファイルに書き込む方がよいと思います。おそらく私の意見です。 – senderle