为什么在指定end关键字时没有python3的print语句刷新输出?

问题描述 投票:2回答:1
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

当我指定结束和睡眠时,我注意到输出没有刷新,直到下一次打印,默认情况下刷新。

为什么会这样?我不得不手动冲洗输出。

python python-3.x stdout flush
1个回答
6
投票

实际上,这是底层stdio函数的默认行为。

当输出到控制台时,遇到换行时将自动刷新流,但不会刷新其他字符。

如果输出不是控制台,那么即使换行也不会触发刷新。

如果你想确保刷新,你可以明确告诉print()

print("Rewinding.......",end = '',flush=True)
© www.soinside.com 2019 - 2024. All rights reserved.