为什么在指定 end 关键字时 python3 的 print 语句不刷新输出?
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
当我指定结束和睡眠时,我注意到直到下一次打印才会刷新输出,而默认情况下是刷新的。
为什么会这样?我不得不手动刷新输出。
事实上,这是底层 stdio
函数的默认行为。
当输出到控制台时,遇到换行符时会自动刷新流,但不会刷新其他字符。
如果输出不是控制台,那么即使换行符也不会触发刷新。
如果你想确定刷新,你可以明确地告诉print()
:
print("Rewinding.......",end = '',flush=True)
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
当我指定结束和睡眠时,我注意到直到下一次打印才会刷新输出,而默认情况下是刷新的。
为什么会这样?我不得不手动刷新输出。
事实上,这是底层 stdio
函数的默认行为。
当输出到控制台时,遇到换行符时会自动刷新流,但不会刷新其他字符。
如果输出不是控制台,那么即使换行符也不会触发刷新。
如果你想确定刷新,你可以明确地告诉print()
:
print("Rewinding.......",end = '',flush=True)