プログラム内からPythonでバッファリングされていない標準出力(python -uのように)[重複] 質問する

プログラム内からPythonでバッファリングされていない標準出力(python -uのように)[重複] 質問する

python -uコード内から実行の効果を得る方法はありますか? それができない場合、プログラムは-uモードで実行されているかどうかを確認し、実行されていない場合はエラー メッセージで終了できますか? これは Linux (Ubuntu 8.10 Server) 上です。

ベストアンサー1

私が思いついた最高のもの:

>>> import os
>>> import sys
>>> unbuffered = os.fdopen(sys.stdout.fileno(), 'w', 0)
>>> unbuffered.write('test')
test>>> 
>>> sys.stdout = unbuffered
>>> print 'test'
test

GNU/Linux でテスト済み。Windows でも動作するはずです。sys.stdout を再度開く方法がわかれば、もっと簡単になります。

sys.stdout = open('???', 'w', 0)

参考文献:
http://docs.python.org/library/stdtypes.html#ファイルオブジェクト
http://docs.python.org/library/functions.html#open
http://docs.python.org/library/os.html#ファイルオブジェクトの作成

[編集]

上書きする前に sys.stdout を閉じたほうがよいことに注意してください。

おすすめ記事