2016-10-31 3 views
0

例の文字を残している:「 rは、」前の行から

sys.stdout.write("\raaaa") 
sys.stdout.flush() 
sys.stdout.write("\rbb") 
sys.stdout.flush() 
# output: bbaa 

新しい文字列の範囲内でのみ文字を上書きラインの初めに戻っているので、\r、この問題への解決策がありますスペースを使わずに残りの文字を上書きできますか?

ANSIエスケープシーケンスでは、どちらもトリックは行いません。

+1

これは動作するはずです。より強力なコンソールフォーマットが必要な場合は、 'curses'モジュールを調べてください。 – TigerhawkT3

+1

@ TigerhawkT3が示唆しているように 'curses'を使うことができますが、' curses'では '\ r'とスペースを使用してそれを行います:) – furas

+0

" ANSIエスケープシーケンスはトリックもしません。 'clr_eol'じゃない? –

答えて

0
import sys 

_lastlen = 0 
def overwrite(s): 
    global _lastlen 
    sys.stdout.write("\r" + s + " "*(_lastlen - len(s))) 
    sys.stdout.flush() 
    _lastlen = len(s) 

overwrite("aaaa") 
overwrite("bb") 
関連する問題