Python

コンソールへの出力を上書きしてゆく方法

More than 5 years have passed since last update.

カウントダウンをしたいときとか、普通にprintを使って

for i in range(100):
    print i

とするとコンソール上に

1
2
3
4
5

と、縦長に出力されてしまう。
これだと見づらいので、インストールの時に表示される進度メーターのように、次の数字を出力する際に前の出力が消えて そこに次の数字が現れてほしい

上書きする場合

import sys, time
for num, i in enumerate(range(100)):
    sys.stdout.write("\r%d" % num)
    sys.stdout.flush()
    time.sleep(0.01)

sys.stdout.writeの\rがキモっぽい。これがないと上書きされない。

追記してゆく場合

import sys, time
for i in range(100):
    sys.stdout.write("=")
    sys.stdout.flush()
    time.sleep(0.01)

これで無駄な出力で画面がうめつくされるのを防げるわけです。