以下代码很奇怪
import time
def test_print_end(EOL):
for i in range(3):
print("Processing... ", end=EOL)
# You may replace ``time.sleep(5)`` with the long-time processing.
time.sleep(5)
print("Done")
print('EOL == ""')
test_print_end(EOL = "")
print('EOL == "\\n"')
test_print_end(EOL = "\n")
EOL == ""
:
在Spyder控制台中运行代码时,它可以预测:打印"Processing... "
,然后等待5秒并在同一行打印" Done"
。
但在“cmd.exe”中它等待3秒,然后同时打印"Processing... Done"
。EOL == "\n"
在Spyder控制台和cmd.exe中以相同的方式工作时:打印"Processing... "
,然后等待5秒并在新行中打印" Done"
。是功能还是bug?
我的环境是:
似乎Python正在等待当前行在打印之前完成。此行为可能会因不同版本或环境而异。在您的情况下,您可以添加flush
parameter以强制打印部分线。
输出是否缓冲通常由文件确定,但如果flush关键字参数为true,则强制刷新流。
print("Processing... ", end=EOL, flush=True)