一个看起来非常像
的简单过滤脚本import sys
for line in sys.stdin:
print line
如果tail -f
的输出通过它传输,不会打印任何内容,但在输出cat
时工作正常。 grep
然而tail -f
没有问题所以我想我应该以某种方式改变脚本处理输入的方式。
答案 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()