私はPythonにいくつか問題があります。私は実行中のスクリプトから出力を得て、別のスクリプトで使用しようとしています。だから、私がしたいことは、このようなものです。Pythonで実行中のスクリプトからstdoutを読む
out.py
とin.py
がこれらのようになっているとします。私はこのようなスクリプトを実行したい
# out.py
def main():
while True:
print "test"
time.sleep(10)
main()
# in.py
text = sys.stdin.readline()
print "hello " + text
、
$ python out.py | python in.py
しかし、これはハングし、「ハローテスト」10秒ごとに印刷する代わりに、何も出力しません。これから、私はout.py
が終了するまで|
が待つことを推測しています。さて、デーモンでin.pyを使用したいのですが?
私の実際の問題は次のとおりです。 arpwatchから出力を取得しようとしています。 arpwatchはデーモンとして実行され、ip/macペアをstderrに送信します。私はその出力を取得し、それを解析したい。そう、私はこのようなものが必要です。
$ arpwatch | python myscript.py
どのように私はmyscript.py
をコーディングする必要があり、これをachiveするには?私はsubprocess module,を使用しようとしましたが、私は再び成功しませんでした。私の英語がまともでないので、私が問題を明確に説明できることを願っています。
ありがとうございました。
このような迅速な返信をいただきありがとうございます。魅力的な作品:) arpwatchのためのptyを見ていきます。 –
@MuhammetCan:どうぞよろしくお願いいたします。 'pexpect'について私が言ったことは忘れてしまいました。プロセスの標準出力だけを読むときは必要ありません。 'pty'モジュールで十分です。 –