我试图编写这个脚本,它只是在同一行上以一秒的延迟打印数字,但它不起作用。
例如,这有效:
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
默认使用的流是行缓冲的(在交互模式下时(,如文档中所述:
- 交互式时,标准流是行缓冲的
这意味着当遇到用于end
(n
(的默认字符串时,将调用flush
。使用其他字符串(即''
(不会触发flush
,因此您必须使用 flush=True
强制使用它。