import time, subprocess
t = 5
while t > 0:
print(t, end = ' ')
t = t-1
time.sleep(1)
subprocess.Popen(['start', 'p398.wav'], shell=True)
想像中是螢幕上會陸續倒數54321,然後才放音樂。
實際卻是停頓5秒後,才開始播放音樂,然後一下印出數字54321。
不懂為什麼會這樣???
懇請知道的大大幫忙解惑,謝謝。
你需要使用flush()函數刷新輸出。
這樣可以讓每次輸出數字時都會立刻刷新輸出,
在每次time.sleep(1)阻塞程式1秒後都會印出數字,
而不是先停頓5秒後一下印出數字54321。
import time, subprocess
t = 5
while t > 0:
print(t, end = ' ')
t = t-1
time.sleep(1)
print(flush=True)
subprocess.Popen(['start', 'p398.wav'], shell=True)
注意:flush() 函數是 python 3.3 版本才引入的,如果你使用的是比較舊版本的python 請使用 sys.stdout.flush()