/>
 
  小さな工夫と発見の蓄積
[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を使う方が見栄えがいい。