1

よく似た単純なフィルタリング スクリプト

import sys

for line in sys.stdin:
  print line

tail -fの出力がパイプを介して渡された場合は何も出力しませんが、の出力では正常に動作しますcatgrepただし、問題はない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 に答える