この投稿から、コンソールなしで印刷すると「Bad file descriptor」エラーが発生する理由がわかりました。.
私の質問は、stdout が利用可能かどうかをどのように検出できますか? 私は単にこのようなことをすることができます:
if os.path.isfile(2):
print "text"
ありがとう
os.path.isfile()は、ファイル記述子 (数値) ではなく、ファイル パス (文字列) を取るため、ソリューションは期待どおりに機能しません。
代わりにos.isatty()を使用できます。
if os.isatty(1):
print "text"
os.isatty()
True
引数が端末に接続された開いているファイル記述子である場合に返されます。
stdout
(ついでに、 is file descriptor 1
. stderr
is file descriptorであることに注意してください2
)。