よく似た単純なフィルタリング スクリプト
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()