管道 iostat -d 1 到 python sys.stdin

Piping iostat -d 1 to python sys.stdin

我正在尝试使用以下命令传输 iostat、mongostat 等实用程序的输出:

$ iostat -d 1 | ./script.py

我在其中使用代码:

for line in sys.stdin:
    print line

我看到它挂起并且没有将每一行打印到控制台。 如果我 运行 没有标志每秒重复一次 '-d 1' 输出只发生一次,脚本将按预期运行。

$ 统计 | ./script.py

正在缓冲数据,您可以在sys.stdout.readline上调用iter:

import sys
for line in iter(sys.stdin.readline,""):
    print line

运行 iostat 它自己只输出几行,iostat -d 1 连续循环以便数据得到缓冲。