簡體   English   中英

為什么python3的print語句在指定end關鍵字時不刷新output?

[英]Why doesn't python3's print statement flush output when end keyword is specified?

from sys import argv, stdout as cout
from time import sleep as sl
print("Rewinding.......",end = '') # If end is given output isn't flushed. But why?
cout.flush()
for i in range(0,20):
    sl(0.2)
    print(".",end='',flush = True) #No output is printed if flush wasn't specified as true.

print("Done") #Output is by default flushed here

當我指定結束和睡眠時,我注意到 output 直到下一次打印才被刷新,默認情況下它是被刷新的。

為什么會這樣? 我不得不手動沖洗 output。

實際上,這是基礎stdio函數的默認行為。

當輸出到控制台時,遇到換行符時將自動刷新流,但不會遇到其他字符。

如果輸出不是控制台,那么即使換行也不會觸發刷新。

如果要確保刷新,可以顯式告訴print()

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM