python コンソール 上書き出力
次の行を出力する前に行頭にカーソルを戻して行を削除してあげれば良い.(行頭に戻してあげれば上書きするので文字数が少なくならないなら行の削除はいらない).
- キャリッジリターン:行頭にカーソルを戻す
\r
- エスケープシーケンスを使用して行削除.
<ESC>[K
.
pythonだと
sys.stdout.write('\r\033[K' + 'なにか') sys.stdout.flush()
- printは自動改行なので使用しない.
- sys.stdout.flush()は以下
- リダイレクトとかを考えるとstdoutでなくstderrを使うのが良い.エスケープシーケンスはターミナルを制御するものなのでファイルに出力されると制御文字やらただの文字だらけになる.
サンプル
import sys, time for i in range(100): sys.stdout.write("\r%d" % i) sys.stdout.flush() time.sleep(0.1)