我尝试编写这个脚本,仅在同一行上依次打印数字,延迟一秒,但它不起作用。
这有效:
from time import sleep
for n in range(1, 11):
print(n)
sleep(1)
但事实并非如此,程序只是卡住了:
from time import sleep
for n in range(1, 11):
print(n, end="")
sleep(1)
谁能解释一下这是为什么吗?
最佳答案
程序不会卡住,您只需通过传递flush=True
来刷新流:
print(n, end="", flush=True)
sys.stdout
是 print
默认使用的流,它是行缓冲的(在交互模式下),如 the documentation 中所述。 :
- When interactive, standard streams are line-buffered
这意味着当遇到用于 end
(\n
) 的默认字符串时,会调用 flush
将被制作。使用其他字符串(即 ''
)不会触发 flush
ing,因此您必须使用 flush=True
强制执行。
关于python - print 的 end 参数会导致 time.sleep 的不同行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43093757/