import time
import sys
sys.stdout.write("1")
time.sleep(5)
print("2")
将在5秒后打印“12”
import time
import sys
sys.stdout.write("1\n")
time.sleep(5)
print("2")
将立即打印“1 \ n”,然后在5秒后打印“2”
为什么会这样?
答案 0 :(得分:22)
如果添加“\和”,则会自动刷新流,并且最后没有新行。 您可以使用以下内容刷新输出:
sys.stdout.flush()
答案 1 :(得分:7)
因为stdout
是缓冲的。您可以通过sys.stdout.flush()
电话尽快强制输出。
答案 2 :(得分:4)
这是因为Python中的输出默认是缓冲的 - 通常在缓冲区已满或导致缓冲区被刷新之前你不会得到输出。在这种情况下,\n
被感知并导致自动冲洗。
有关解决问题的方法,请参阅此问题:How to flush output of Python print?
答案 3 :(得分:4)
sys模块中的sys.stdout.write命令有目的地打印出没有\ n字符的语句。这是对stdout流的正常调用的工作方式,例如在C ++或C中,必须手动添加\ n字符。
然而,Python提供的print命令会自动为字符串添加\ n字符,从而简化代码并使其更易于阅读。
第一个结果发生现象的原因是因为系统正在等待刷新打印,这是由\ n字符提供的。您可以使用此命令sys.stdout.flush()
来避免这种情况,该命令将刷新强制它打印的标准输出流。
答案 4 :(得分:2)
缓冲。它不是真正的Python,而是您的操作系统/终端。任何程序的输出都被发送到缓冲区,即内存的保留区域。收集整行后,将其发送到屏幕。通常有一个钩子,一个名为flush()
的方法,用于强制输出部分线。
答案 5 :(得分:1)
考虑到当您在计算机中键入命令时,在您按ENTER键之前它不知道您已完成
同样,换行告诉Python你已完成该行。