こんにちは。hacknoteのr.katoです。
今回はpythonで標準出力時に上書き(更新)をしながら標準出力をする方法を紹介していきます。
1行だけの場合
以下の様にprintする文字列の最初もしくは最後に`”\r”を結合し、引数endに空白を指定してあげれば指定した文字列が上書きされます。
以下の場合は0から9までが同じ場所で出力されます。
import time for i in range(10): print("\r"+str(i),end="") time.sleep(1)
複数行の場合
複数行の場合、以下の様にprint文で表示する文字列の一番最後に\033[nA
を結合して表示すれば、OKです。
import time for i in range(10): print(str(i)+"\n"+str(i)+"\n"+str(i)+"\n"+"\033[3A",end="") time.sleep(1)
\033[nA
はカーソルの移動を意味しており、上記のプログラムの場合、3行標準出力し、
その後、カーソルが3行上に移動すると言う意味です。
他にも上下左右、以下の様にカーソルを移動させる方法があります。
ちなみに、1行のみ上書きしていた時に使っていた、\r
はその行の一番最初までカーソルを移動させると言う意味を持っています。
\033[nA #n行上に \033[nB #n行下に \033[nC #n行右に \033[nD #n行左に