Pythonの標準出力のバッファサイズを0にする方法
Pythonにはprogressbarというその名の通りプログレスバーを表示するためにモジュールがあるけど、そんな大それたものじゃなくて、ほんの少しだけでいいからプログレスバーっぽいものを表示したかったから、Pythonで標準出力のバッファサイズを0にする方法を調べた*1
# 標準出力を開き直す sys.stdout = os.fdopen(sys.stdout.fileno(), 'w', 0)
これで一文字ずつ標準出力されるようになる。この状態で試しに
import time print 'processing', for i in xrange(5): time.sleep(1) print '.',
ってやると、processingって表示された後に少しずつ...が追加されていく。
Pythonの起動オプションで-uを付けるのでもいけるってことを思い出したのは、調べた後だった。
*1:デフォルトでは一行バッファになってる