下面的代碼應該在1到10之間打印,間隔爲1秒,但是它在實際打印任何內容之前等待10秒,然後將其全部打印出來立刻。我怎樣才能緩衝輸出?Python sys.stdout.flush()不起作用
import sys
import time
for count in range(10) :
sys.stdout.write(str(count))
sys.stdout.flush()
time.sleep(1)
下面的代碼應該在1到10之間打印,間隔爲1秒,但是它在實際打印任何內容之前等待10秒,然後將其全部打印出來立刻。我怎樣才能緩衝輸出?Python sys.stdout.flush()不起作用
import sys
import time
for count in range(10) :
sys.stdout.write(str(count))
sys.stdout.flush()
time.sleep(1)
Python 2.7,3.2和3.3都不允許在您的寫入調用中使用關鍵字參數。那是正確的代碼嗎?打印功能當然允許結束關鍵字,不應與寫入混淆。寫入不添加換行符。
刪除'結束'關鍵字參數和測試顯示代碼工作正常。
發現問題
import sys
import time
for count in range(10) :
sys.stdout.write("\b%s" % count)
sys.stdout.flush()
time.sleep(.1)
不知道爲什麼蟒蛇很奇怪這樣的,但顯然它接受這一點。你的代碼應該工作得很好,但我猜python只是不喜歡你。
我使用python 3.3 btw,所以它可能在其他版本中有所不同。進行了更多的研究,發現print「end =」\ r「」中的參數將清除緩衝區,因此不需要導入sys,並且如果循環打印任何內容,它將替換您剛剛打印的任何內容。 這給輸出一個非常酷的外觀 – Alexander
感謝您的快速響應......這是一個錯誤......即使沒有結束=「」代碼仍然暫停之前,一次打印所有內容 – user1724351
我完全和完全無法重現該問題。你可以通過測試其他人來縮小到特定的Python版本嗎?什麼OS? – whardier
使用python 3.2.3的Mac OSX。它只是不緩衝 – user1724351