2011-03-30 41 views
5

如何編輯我剛剛打印的字符串?例如,對於倒數計數器(先打印30,然後將其更改爲29等)如何編輯打印到stdout的字符串?

謝謝。

+0

這只是[旋轉光標問題]上的變體(http://stackoverflow.com/questions/4995733/how-to-create-a-spinning-command-line-cursor-using-python)。 – 2011-03-30 20:52:22

回答

6

打印回車\r它會將光標移回行的開頭。確保你不會在最後打印換行\n,因爲你不能回溯行。這意味着你必須要做的是這樣的:

import time 
import sys 
sys.stdout.write('29 seconds remaining') 
time.sleep(1) 
sys.stdout.write('\r28 seconds remaining') 

(而不是使用print,這一個換行符添加的是什麼寫入stdout結束。)

+1

在Python 3中,您可以使用end參數來確保末尾沒有添加換行符:'print(x,end =「」)' – Joschua 2011-03-30 21:05:28

+1

在Python 3之前,您可以在'print'語句之後留下','以確保最後沒有添加新行:'print x,' – 2011-03-30 21:13:56

+0

我直接複製了該代碼,並在Python 2.7中的新行上打印 – User 2014-02-28 16:48:29

0

如果你在類似xterm的輸出設備上,執行此操作的方式是覆蓋輸出。您必須確保在編寫結束時的回車符(不帶換行符)時,將光標移回行的開頭,而不會前進到下一行。您編寫的下一個輸出將替換當前顯示的數字。

0

您無法更改打印內容。打印什麼。但是,就像bradley.ayers說的那樣,你可以回到行頭並在舊值上打印新的東西。