簡體   English   中英

Python回車不起作用

[英]Python carriage return not working

我有一個長時間運行的腳本,它遍歷數據庫中的行。 我經常希望它打印要處理的行數,但每次都不需要創建新行。 這基本上就是我所擁有的:

import sys
mystr = "{} rows complete\r"

for i in range(0, 100):
    if i % 10 == 0:
        sys.stdout.write(mystr.format(i))
        sys.stdout.flush()

當我運行它(在Python 2.7.5 64位,Windows)上時,我得到:

0 rows complete
10 rows complete
20 rows complete
...
100 rows complete

誰能想到為什么回車不起作用? 我在這里看到了一些關於Python和\\r類似問題,但是所有答案都說包括sys.stdout.flush()

使用\\r可能是此處的正確方法,但是其行為很大程度上取決於文本的輸出方式。 並非所有航站樓都會尊重空運回程:

cmd.exepowershell.exe都應按照您期望的方式輸出文本(Powershell ISE不會,但是在這里是個紅色鯡魚)。

Python自己的idle將忽略回車符,所有輸出都排成一行。

如您所述,您自己的編輯器的命令窗口也將忽略\\r

另外,如果您從交互式窗口嘗試,則每行的末尾還會輸出一些數字:這是因為交互式窗口會有助於將調用結果輸出到sys.stdout.flush()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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