2017-10-24 7 views
2

pythonと書式設定された文字列を使ってstdoutに出力された行を更新しようとしています。行は印刷されていますが、各行には、以前に印刷された更新の横の同じ行に印刷されます。python3のstdoutで印刷された文字列を更新する

item = ("{}{}{}{}".format(totalAllScraped, 
          str(" profiles scraped "), 
          (len(sortedurls)), 
          str(" filtered profiles saved."))) 
print(item, sep='', end='', flush=True) 

私はstdoutに行を出力したい、そしてループの繰り返しごとに、前の行は次の行で上書きされます。

+0

'print'関数で' end'キーワード引数を削除できませんか? – Eric

答えて

1
import sys 

stuff = ("{}{}{}{}".format(totalAllScraped, str(" profiles scraped "), (len(sortedurls)), str(" filtered profiles saved."))) 
    sys.stdout.write("\r" + stuff) 
    sys.stdout.flush() 

これはトリックはここに感謝とにかく

+1

質問に対するコメントによれば、 'end = '''を削除することができました。これは、endlineではなくnullで各print文を終了させるでしょう。それを 'end =" \ r "'または 'end = '\ r"と置き換えることも、そのトリックを行うかもしれません。 – LightCC

+0

大変ありがとうございます。私に説明する時間をとっていただきありがとうございます –

0

import sys 
import time 
for i in range(3): 
    message = "testing " + i 
    sys.stdout.write("\r" + stuff) #The \r is carriage return without a line 
            #feed, so it erases the previous line. 
    sys.stdout.flush() 
    time.sleep(1) 

上記プリント置き換えられてstdoutに印刷されたPython文字列の単純な例ですでした:

testing 1 

標準出力に、2つの後続出力erasureはそれを消去し、それを 'testing 2'と置き換えて 'testing 3'に置き換えます。

+0

ありがとうございます。 –

関連する問題