2015-03-02 80 views
0

比方說,我有這樣的基本代碼:Python 3.x - 控制檯中「end =」命令的奇怪行爲?

import time 

print("Thinking",end=" ") 
for i in range(3): 
    time.sleep(1) 
    print(".",end=" ") 
time.sleep(1) 
print("I have the answer!") 

只是給出一個例子,因爲複製了整個事情很長,但在基本層面上,這是我想做的事情。在shell中它工作正常,它會打印「思考」,等待一秒,打印一個點,等待另一秒,打印另一個點,等等。 但是,在控制檯中,它會等待3秒鐘,然後一次打印全部,這是爲什麼? 我已經知道它必須與「end =」命令有關,有什麼我可以做的,以打擊這一點,但一直可以打印的東西在同一行上的時間間隔?提前致謝。

+0

這是在https://stackoverflow.com/questions/230751/how-to-flush-output-of-python-print中討論的,雖然我懷疑你不知道搜索'flush'。 – 2015-03-03 03:58:28

回答

0

import sys並致電print後致電sys.stdout.flush()

默認情況下,stdout是行緩衝的。這意味着它在內部緩存寫入,直到它看到一個換行符。只有在寫入換行符時,Python flush文件。

1

從3.3開始,更容易的答案是將flush=True添加到打印呼叫。

print(".",end=" ", flush=True)