Python不在循环中打印值

Python不在循环中打印值,python,Python,以下是我尝试运行的示例代码: import sys while True: print "Hello World" #sys.stdout.write("Hello World") #sys.stderr.write("Hello World") sys.stdout.flush() 当从python解释器运行时,它运行良好并打印“Hello World”。 问题是,当我尝试按如下方式运行它时,即使刷新输出,也无法使用打印和标准输出将其写入管道。它只在我取消注释

以下是我尝试运行的示例代码:

import sys
while True:
    print "Hello World"
    #sys.stdout.write("Hello World")
    #sys.stderr.write("Hello World")
    sys.stdout.flush()
当从python解释器运行时,它运行良好并打印“Hello World”。 问题是,当我尝试按如下方式运行它时,即使刷新输出,也无法使用打印和标准输出将其写入管道。它只在我取消注释sys.stderr.write()时起作用。

python test.py | tail-n1

请注意,它仅在print语句处于循环中时发生。有人能帮我理解它为什么会这样吗


谢谢

您正在生成无休止的输出,
tail-n1
正在等待来自stdin的最后一行输入,它永远不会到达

您正在生成无休止的输出,
tail-n1
正在等待来自stdin的最后一行输入,而该输入从未到达

为什么要描述问题而不是提供可运行代码来说明让您吃惊的事情?为什么要描述问题而不是提供可运行代码来说明让您吃惊的事情?谢谢@iguanaut的帮助。看来我想得太多了。但作为后续,除了最后一行以外的任何内容都将写入标准错误?我已经接受了你的回答,因为我的主要问题已经得到了回答。我不确定——这听起来很棘手,作为一个简单的问题可能不可行。如果你单独问这个问题,我肯定有一个bash向导可以回答。谢谢@iguanaaut的帮助。看来我想得太多了。但作为后续,除了最后一行以外的任何内容都将写入标准错误?我已经接受了你的回答,因为我的主要问题已经得到了回答。我不确定——这听起来很棘手,作为一个简单的问题可能不可行。不过如果你单独问这个问题,我肯定有一个bash向导可以回答。