2017-06-22 17 views
1

私が尋ねていることを正確に説明しましょう。 Pythonのコンソールがこのようになっていることとします
pythonを同じ行に繰り返し印刷する方法

line1 
line2 
line3 
line4 
line5 
... 

は今、あなたはすべての反復と3行に印刷したループがあるとします。通常、最初の繰り返しではline1、line2、line3に、次に2番目には4,5,6のように印刷されます。私はline1、2、3にのみ印刷させ、前の行は削除したい。

これは私が印刷するのが大変で、前に印刷されたものはもう問題ではないので、このように私は膨大な数の行を作成しません。

EDIT:ここで問題が増えているので重複した質問ではないと思います。コンソール全体をクリアするのが最も簡単な方法だと思います。あなたの答えをありがとう!

+7

[コンソール出力をPythonで置き換える](0120-336-333) –

+0

反復が発生するたびにコンソールをクリアすることができます。したがって、前の印刷物の画面を掃除し、次の繰り返しのために空白のスレートを準備してください。 – Goralight

+0

コンソールに印刷しているという意味で、すべての繰り返しでコンソールをクリアすることができます。これは 'os.system( 'cls')' – PeskyPotato

答えて

0

"\r"を最初に追加して最後の行を置き換えます。その間に改行があってはいけません。

Python2:

>>> print("line1"),;print("\rline2") 
line2 

のpython3:

>>> print("line1", end="");print("\rline2") 
line2 

"line1""\rline2"によって上書きされています。 https://docs.python.org/3.5/library/curses.html#module-curses

それとも、印刷制御文字と配列によって、よりハック方法でそれを行うことができます。

+0

の前の行に戻るのはどうでしょうか? –

+0

私が知る限り、画面をクリアする必要があります。 –

+0

あなたはこの解決策が複数の行ではありません。前の行に戻るには、カーソルを移動する必要があります。 – Maresh

0

あなたはANSI escape codeを使用してそれを行うことができます "\ 033 [F"、:私のLinuxターミナルで完璧に動作

import time 

lines = ['line %d' % n for n in range(10)] 

reset_after = 3 

for number, line in enumerate(lines): 
    if number > 0 and not number % reset_after: 
     # if we wrote n lines, we are now on line n+1, 
     # so we go up n+1 lines 
     print("\033[F" * (reset_after + 1)) 
    # We must first erase the line where we're about to write, 
    # in case our new line is shorter. 
    # "\033[K" erases from the cursor 
    print("\033[K" + line) 
    time.sleep(0.5) 

関連する問題