Python 为什么打印功能没有在正确的时间运行?

Python 为什么打印功能没有在正确的时间运行?,python,printing,Python,Printing,这是我的密码: import time as t print('hello', end=' ') t.sleep(1) print('hello', end=' ') t.sleep(1) print('hello', end=' ') t.sleep(1) 我的问题是所有的打印命令都是在sleep命令之后执行的,这不是我想要的输出。这是因为输出缓冲。在打印换行符之前不会刷新缓冲区。因为您使用了end='',所以每个单词后面都没有换行符,所以在脚本结束之前不会刷新缓冲区 您可以使用flush

这是我的密码:

import time as t

print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1)
print('hello', end=' ')
t.sleep(1)

我的问题是所有的打印命令都是在sleep命令之后执行的,这不是我想要的输出。

这是因为输出缓冲。在打印换行符之前不会刷新缓冲区。因为您使用了
end=''
,所以每个单词后面都没有换行符,所以在脚本结束之前不会刷新缓冲区

您可以使用
flush=True
选项强制它立即刷新

import time as t
import sys

print('hello', end=' ', flush=True)
t.sleep(1)
print('hello', end=' ', flush=True)
t.sleep(1)
print('hello', end=' ', flush=True)
t.sleep(1)

你要打印到哪里?我无法复制,但有一个缓冲区用于
stdout
,很可能它没有被刷新。我的意思是,你把stdout定向到某个地方了吗?这应该可以很好地打印到控制台上。你的意思是需要三秒钟,然后打印hello三次吗?因为它打印hello三次,中间有一个1秒的间隔,所以在Python 3中有一个可选的
flush
参数。如果您添加
flush=True
print
应该立即打印。密切相关:我认为这不会给出所需的行为。我可以在一行上按顺序得到输出built@ChristianDean刚发现我自己,正要编辑gotcha@Barmar.print('hello\n',end='')为什么这一条正确?新行在打印中起什么作用?因为您正在向输出缓冲区@mohamadmahdireisi写入新行,导致它被刷新。