[英]How can I use \r to make Python print on the same line?
有人可以徹底解釋一下'\\ r'在Python中的工作方式嗎? 為什么以下代碼沒有在屏幕上打印出任何內容?
#!/usr/bin/python
from time import sleep
for x in range(10000):
print "%d\r" % x,
sleep(1)
'\\ r'只是另一個ASCII碼字符。 根據定義,它是CR或回車符。 使用的終端或控制台將決定如何解釋它。 Windows和DOS系統通常期望每行以CR / LF('\\ r \\ n')結尾,而Linux系統通常只是LF('\\ n'),經典Mac僅是CR('\\ r'); 但是即使在這些單獨的系統上,您通常也可以告訴終端仿真器如何解釋CR和LF字符。
從歷史上看(當打字機工作時),LF將光標移至下一行,CR將其移回第一列。
要回答有關為什么什么都不打印的問題,請執行以下操作:刪除打印行末尾的逗號。
改為這樣做:
print "\r%d" % x,
您的輸出正在緩沖中,因此不會立即顯示。 到那時,它已經被shell或解釋器提示所破壞。
每次打印時通過沖洗來解決此問題:
#!/usr/bin/python
from time import sleep
import sys
for x in range(10000):
print "%d\r" % x,
sys.stdout.flush()
sleep(1)
與\\r
無關。 問題是尾隨,
在你的print
語句。 它試圖打印就行了最后一個值,並且,
正在創建一個元組,其中最后一個值是空的。 丟失,
它將按預期工作。
編輯:
我不確定說它正在創建一個元組實際上是正確的,但這兩種方式都是問題的根源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.