0

現在のプロジェクトでは、stdoutに依存するバージョンまたは少なくともフォーマットされたstdoutをログファイルに書き込む方法を見つける必要があります。現在、私はsubprocess.Popen(exec、stdout = log)を使用しています。これは、フォーマットされていないファイルに書き込みます。

私が得た最良のアイデアは、stdoutをインターセプトし、カスタムモジュールに再ルーティングし、ifとelifの組み合わせを使用して独自の文字列をログに書き込むことにより、出力をオンザフライでフォーマットすることでした。しかし、ドキュメントでPython3でこれを行う方法を見つけることができませんでした。私が見つけた最も適切な答えはこの質問にありました、受け入れられた答えはすでにちょっと近いです。

しかし、 stdout=classとして使用する必要があるクラスをどのように正確に構築する必要があるかを理解できていません。これらのメソッドのどれが入力を受け取りますか(そしてそれはどのようにフォーマットされますか)?これらの方法のどれが必要ですか?それとも、私がやりたいことを達成するためのもっと簡単な方法があるでしょうか?

4

1 に答える 1

1

sargeプロジェクトを使用して、親プロセスがサブプロセスのstdout(および/またはstderr) をキャプチャし、行ごとに読み取り (たとえば)、読み取った行で好きなことを実行できるようにすることができます (適切にフォーマットされたログへの書き込みを含む)。ファイル)。

開示:私はsargeプロジェクトのメンテナーです。

于 2012-05-10T18:22:29.063 に答える