import time
import sys
sys.stdout.write("1")
time.sleep(5)
print("2")
import time
import sys
sys.stdout.write("1\n")
time.sleep(5)
print("2")
後打印 「12」 5秒
這是爲什麼之後將打印 「1 \ n」 個向右走,然後 「2」?
import time
import sys
sys.stdout.write("1")
time.sleep(5)
print("2")
import time
import sys
sys.stdout.write("1\n")
time.sleep(5)
print("2")
後打印 「12」 5秒
這是爲什麼之後將打印 「1 \ n」 個向右走,然後 「2」?
如果添加「\ n」,那麼流將自動刷新,並且最後不會有新行。 您可以使用以下命令刷新輸出:
sys.stdout.flush()
因爲stdout
已被緩衝。您可能可以通過撥打sys.stdout.flush()
來儘早強制輸出。
緩衝。這不是真的Python,而是你的操作系統/終端。來自任何程序的輸出被髮送到緩衝區,該區域是存儲器的保持區域。當整行被收集時,它被髮送到屏幕上。通常會有一個鉤子,一種名爲類似flush()
的方法來強制輸出部分線條。
想想看,當你輸入一個命令到計算機,它不知道你完成直到你按下ENTER
同樣,換行符告訴Python中,你已經完成了該行。
這是因爲Python中的輸出被默認緩衝 - 通常在緩衝區已滿或導致緩衝區被刷新之前,您不會得到輸出。在這種情況下,\n
被感知並導致自動沖洗。
看到這個問題了解決該問題的方法:How to flush output of Python print?
從sys模塊的sys.stdout.write函數命令目的地打印出的語句,而不用\ n字符。這是對標準輸出流的正常調用的作用方式,例如在C++或C中,必須手動添加\ n字符。
但是,Python提供的打印命令會自動爲字符串添加一個\ n字符,因此簡化了代碼並使其更易於閱讀。
第一個結果中出現現象的原因是因爲系統正在等待打印輸出,這是由\ n字符提供的。你可以通過使用這個命令sys.stdout.flush()
來避免這種情況,該命令將刷新強制它打印的stdout流。
我提高了除你的答案之外的所有答案,因爲它不那麼具有說明性 – eyquem 2011-05-07 15:00:05