私はPythonスクリプトでログを検索していますが、見つかったログを継続的に出力しています。そのような例:python Linuxシェルでサブプロセスパイプを使う方法
$ python logsearch.py | grep timeout
問題は、logsearch.pyが終了するまでソートとwcはブロックされますが、logsearch.pyは結果を継続的に出力します。
サンプルlogsearch.py:
p = subprocess.Popen("ping google.com", shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
for line in p.stdout:
print(line)
UPDATE:
はちょうどsys.stdoutにサブプロセスで標準出力を変更、Pythonはあなたのためのパイプを処理する、考え出しました。
p = subprocess.Popen("ping -c 5 google.com", shell=True, stdout=**sys.stdout**)
ご協力いただきありがとうございます!
'ping -c 5'は永遠に実行されるスクリプトの奇妙な例です!しかし、ええ、あなたはそれらをすべて持っているまで、物事を分類したり、物の数を数えることはできません。 – tdelaney
@tdelaney pingのカウントを削除し、ソートの代わりにgrepを使用します。データがパイプを通じてgrepに流れなければならないが、何も印刷せずに永久に実行されるようだ。 –
出力がタイムアウトと一致しないため、何も受信しません。 $ python logsearch.pyを試してみてください。 grep -v timeout –