2014-02-28 39 views
2

我正在跟着一個小教程,經過大量研究後,我無法弄清爲什麼給定的代碼不能在同一行上打印。我直接複製它,所以它應該工作。sys.stdout.write和 r回車不起作用

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

輸出是:

29 seconds remaining 
28 seconds remaining 

最終輸出應爲:

28 seconds remaining 
+1

你正在使用的控制檯是什麼?例如,'\ r'在IDLE中不起作用。 –

+0

我正在使用PyScripter – User

+0

我猜PyScripter控制檯也不支持'\ r'回車。 –

回答

0

我把爲 「\ r」 在該行的末端,而不是在前面。就像這樣:

sys.stdout.write("%s[%s%s] %2i/%i\r" % (variables go here)) 
sys.stdout.flush() 
+0

如果我完成顯示並想要開始一個新行(對於相同類型的顯示器),如何使其工作?----噢,別擔心,我看到我可以使用'\ n'。只需在這裏留下評論,以便其他人可以看到。 – ymeng

0

嘗試,似乎對其他有同樣的設置和我一樣的工作方案後,我必須找到了艱辛的道路是回車序列是由輸出打印字符串殼解析(請在這裏糾正我,如果不夠精確)。當我意識到Windows命令提示符(C:\ Windows \ System32 \ cmd.exe)實際上按照預期解釋回車符時,我開始接近解決方案,但PyScripter IDE沒有。然後我意識到PyScripter開發人員對此有所瞭解,但不想花費模仿cmd.exe行爲的努力。

希望這可以讓研發人員朝正確的方向發展,並且會節省一些時間。