読者です 読者をやめる 読者になる 読者になる

Memorandum and Diary

2017年はザコい英語力・カスい筋力をどうにかする

python コンソール 上書き出力

f:id:TheTree:20170219185811g:plain

次の行を出力する前に行頭にカーソルを戻して行を削除してあげれば良い.(行頭に戻してあげれば上書きするので文字数が少なくならないなら行の削除はいらない).

pythonだと

sys.stdout.write('\r\033[K' + 'なにか')
sys.stdout.flush()
  • printは自動改行なので使用しない.
  • sys.stdout.flush()は以下

thetree.hatenadiary.jp

  • リダイレクトとかを考えるとstdoutでなくstderrを使うのが良い.エスケープシーケンスはターミナルを制御するものなのでファイルに出力されると制御文字やらただの文字だらけになる.

サンプル

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

参考

http://www.yunabe.jp/docs/terminal_progress_bar.html