使用Python过滤尾部输出

时间:2013-09-06 11:12:40

标签: python unix command-line

一个看起来非常像

的简单过滤脚本
import sys

for line in sys.stdin:
  print line
如果tail -f的输出通过它传输,

不会打印任何内容,但在输出cat时工作正常。 grep然而tail -f没有问题所以我想我应该以某种方式改变脚本处理输入的方式。

1 个答案:

答案 0 :(得分: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()