2017-06-22 31 views
1

讓我描述我正在問什麼。假設蟒蛇控制檯看起來像這樣:
如何使python再次打印成相同的行

line1 
line2 
line3 
line4 
line5 
... 

現在假設你有一個循環,打印到3線,每次迭代。所以通常它會在第一次迭代中打印到line1,line2和line3中,然後在第二次打印中打印出4,5,6,等等。我只想將它打印到行1,行2和行3中,同時刪除以前在這些行中的內容。

原因是因爲我有很多打印以及以前打印的內容都不再重要,所以這種方式我不會創建大量的行。

編輯:我認爲這不是一個重複的問題,因爲這裏有更多的線路。我認爲清理整個控制檯是最簡單的解決方案。謝謝你的回答!

+7

[在Python中替換控制檯輸出]的可能副本(https://stackoverflow.com/questions/6169217/replace-console-output-in-python) –

+0

每次迭代發生時都可以清除控制檯。因此,清潔先前打印的屏幕併爲下一次迭代準備一張空白紙片 – Goralight

+0

如果您打算在控制檯上進行打印,則可以在每次迭代時清除控制檯。這可能是'os.system('cls')' – PeskyPotato

回答

0

首先添加"\r"以替換最後一行。中間不應該有任何換行符。

Python2:

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

Python3:

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

"line1"已被"\rline2"覆蓋。

+0

回到前一行怎麼辦? –

+0

據我所知,你必須清除屏幕。 –

+0

這個解決方案不是多線。要返回到上一行,您需要移動光標。 – Maresh

0

可以使用ANSI escape code做 「\ 033 [F」,應該在很多終端工作:

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) 

,在我的Linux終端完美的作品。