以下代码很奇怪
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 == ""
时:
"Processing... "
,然后等待5秒钟,并在同一行中打印" Done"
。"Processing... Done"
。EOL == "\n"
在Spyder控制台和cmd.exe中的工作方式相同:先打印"Processing... "
,然后等待5秒钟,然后在新行中打印" Done"
。它是功能还是错误?
我的环境是:
答案 0 :(得分:1)
似乎Python正在等待当前行完成才打印它。在不同的版本或环境中,此行为可能有所不同。根据您的情况,您可以添加flush
parameter来强制打印部分行。
是否缓冲输出通常由文件确定,但是如果flush关键字参数为true,则将强制刷新流。
print("Processing... ", end=EOL, flush=True)