一个看起来很像的简单过滤脚本
import sys
for line in sys.stdin:
print line
如果输出通过管道传输,则不会打印任何内容tail -f
,但与cat
. grep
但是没有问题,tail -f
所以我想我应该以某种方式改变脚本处理输入的方式。
一个看起来很像的简单过滤脚本
import sys
for line in sys.stdin:
print line
如果输出通过管道传输,则不会打印任何内容tail -f
,但与cat
. grep
但是没有问题,tail -f
所以我想我应该以某种方式改变脚本处理输入的方式。
根据 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()