pythonで改行しないで文字列を表示したかったので自分用メモ
進捗管理のために1処理ごとにメッセージを表示していたが、一回一回改行されるのがうっとおしく感じた。
test.py
for i in xrange(10):
print "i = %d"%i
i=1
i=2
i=3
i=4
こんな感じ。
ここで目をつけたのが¥rというエスケープシーケンス。
昔のタイプライターのなごりで復帰を表す。これが使えるのではないかと思い使ってみる
改行は使わないので文末に,(カンマ)をつけ、確認できるようにスリープもつける。
test2.py
import time
for i in xrange(10):
print "¥r i = %d"%i,
time.sleep(0.3);
i=9
何も表示されずにi=9のみが表示される。
javaなどはこの方法でもうまくいったがpythonはできなかった。
そこで、強制フラッシュするsys.stdout.flush()をいれる。
test3.py
import time
import sys
for i in xrange(10):
print "¥r i = %d"%i,
sys.stdout.flush()
time.sleep(0.3)
これでうまく動くようになった。
他にもpython3の標準出力関数を使う方法もあるらしい。
また、調べてみるとやはりたくさんこの問題についての記事があった。