私は、それはそれはまたそれが行われた場合subprocess.check_callのstderrがstderrストリームとstdoutストリームの両方を受信するのはなぜですか?
sys.stdout.write(progress_string)
を使用してパーセントの進捗状況を出力
print message_string
を使用して、いくつかのメッセージを出力Pythonスクリプト(my_python_script.py
それを呼び出す)、いくつかの統計情報を出力し、Iためてきました後、私は別のスクリプトでは、私はAを呼び出し、今
sys.stderr.write(stats_string)
を使用し、stderr
を経由してファイルのものを収集したいです驚いたことに、この
file_obj = open('stats.log', 'a')
check_call(['my_python_script.py'], stderr=file_obj)
file_obj.close()
のようなsubprocess.check_call()
とのBOVEスクリプトは、file_obj
はprint
出力、sys.stdout.write
出力とsys.stderr.write
出力などmy_python_script.py
からのすべての出力が含まれています。私はそれがsys.stderr.write
からの出力しか含んでいないと思った。
なぜこれが当てはまりませんか? check_call
はデフォルトでstderr
〜stdout
にリダイレクトされますか?
簡単な修正がある場合、私は幸せなキャンピングカーになります。ありがとう。
ところで、私はLinux FedoraでPython 2.7を使用しています。
あなたのスクリプトに 'sys.stdout.fileno()'と 'sys.stderr.fileno()'と同じものが出ていたら? –