簡體   English   中英

如何使用\\ r在同一行上打印Python?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM