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。
不懂為什麼會這樣???
懇請知道的大大幫忙解惑,謝謝。m(__)m
(前一篇發問因故取消,改成這篇,但是被洗掉了,沒人看到,於是重發一篇)
你遇到的是 Python 基於 buffer 機制而發生的現象,處理方式能用 flush=True
(即 print(t, end = ' ', flush=True)
)。
有興趣可去看 sys.stdout 的敘述,還有 What does print()'s flush
do? 的討論。
(或是 Google Python print flush
)