为什么 sys.stdout.flush() 不在同一行打印所有字符?

Why isn't sys.stdout.flush() printing all the characters on the same line?

这是我的代码:

wait = "..."
for char in wait:
   sys.stdout.flush()
   time.sleep(1)
   print(char)

我正在尝试让它输出:

...

但它输出:

.
.
.

不明白为什么sys.stdout.flush没有效果

print中使用参数end=''可以得到想要的结果:
试试这个:

import sys
import time
wait = "..."
for char in wait:
   sys.stdout.flush()
   time.sleep(1)
   print(char, end='')

您可以阅读有关 end 参数的更多信息 here

std.out.flush() 只是将缓冲区中的内容写到屏幕上

默认情况下,print()会在末尾添加一个\n来写一个新行。您可以通过 print(s, end='')

将其关闭

如果您在 Python 解释器中键入 help(print),您将得到:

print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)

Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file:  a file-like object (stream); defaults to the current sys.stdout.
sep:   string inserted between values, default a space.
end:   string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.

使用此信息:

for char in wait:
   time.sleep(1)
   print(char, end='', flush=True)

试一试:

import sys
import time

wait = "..."
for char in wait:
    time.sleep(1)
    print(char, end="", file=sys.stdout, flush=True)