/>
小さな工夫と発見の蓄積
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
ただいまコメントを受けつけておりません。
print
を使うと、どんどん新しい行が追加されて目障りだ。同じ行にとどまって、数字だけが変化していく出力はどうすればできるのか、不思議だったが、その方法がやっと分かった。flush
をする。しないと、出力のタイミングが遅れることがある(らしい)。flush
は、強制的に出力させる。トイレの水を流すのと同じflush。import sys from time import sleep for i in range(1, 21): sys.stdout.write('\r[ %-20s %3.0f%% ]' % ('='*i, i*100/20)) sys.stdout.flush() sleep(.1)
import sys from time import sleep for i in range(1, 51): ch = '-<>'[i % 3] sys.stdout.write('\r%s %3.0f%% done %s' % (ch*10, i*100/50, ch*10)) sys.stdout.flush() sleep(.1)
print
の問題らしく、sys.stdout.write
の代わりに 「print <文字列>,
」と末尾にコンマをつけても同じ結果は得られるようだ。しかしそれでもflush
は必要なので、sys.stdout.write
を使う方が見栄えがいい。