0

現在、無制限のPopen.stdoutオブジェクトから最後のN行を取得しようとしています。そして無制限とは、stdoutに書き込まれる無制限/多くのログエントリを意味します。時間制限のあるPopen.stdout.readline()を試しましたが、これにより、特に出力が少ない場合に、ランダムな問題が大量に発生します。現在の出力のある種のスナップショットは私を助けますが、私はそのようなものを見つけることができません。私が主に見つける解決策はすべて、終了する外部プロセス用ですが、私のものは、最後の行を読んだ後にstdoutに書き込むことができるはずのサーバーアプリケーションです。

ご挨拶、

Faerbit

4

1 に答える 1

0

Unix では、プロセスを起動するときにtail最初にパイプできます。

p=subprocess.Popen("your_process.sh | tail --lines=3", stdout=subprocess.PIPE, shell=True)
r=p.communicate()
print r[0]

の使用がshell=Trueここでの鍵です。

于 2013-02-18T05:22:14.710 に答える