1

一个看起来很像的简单过滤脚本

import sys

for line in sys.stdin:
  print line

如果输出通过管道传输,则不会打印任何内容tail -f,但与cat. grep但是没有问题,tail -f所以我想我应该以某种方式改变脚本处理输入的方式。

4

1 回答 1

3

根据 python(1) 联机帮助页:

请注意,xreadlines()、readlines() 和文件对象迭代器(“for line insys.stdin”)中有内部缓冲,不受此选项影响。要解决此问题,您需要在“while 1:”循环中使用“sys.stdin.readline()”。

请尝试以下操作:

import sys

while True:
    line = sys.stdin.readline()
    if not line:
        break
    sys.stdout.write(line)
    sys.stdout.flush()
于 2013-09-06T11:15:53.017 回答