ホームページ  >  記事  >  バックエンド開発  >  実行可能出力をファイルとターミナルの両方にリダイレクトするにはどうすればよいですか?

実行可能出力をファイルとターミナルの両方にリダイレクトするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-04 08:36:30307ブラウズ

How to Redirect Executable Output to Both Files and the Terminal?

ファイルとターミナルの両方に出力して実行可能ファイルを実行する

subprocess.call() を使用して複数の実行可能ファイルを実行する場合、標準出力とエラー出力はファイルと端末の両方に出力されます。ただし、stdout=outf または stderr=errf を使用すると、出力が端末には表示されず、ファイルに書き込まれることが指定されるだけです。

目的の動作を実現するには、Popen クラスを直接利用し、 stdout=PIPE 引数を使用して、標準出力をファイルではなくパイプでキャプチャします。その方法は次のとおりです。

<code class="python">from subprocess import Popen, PIPE

with open("out.txt", "wb") as outf, open("err.txt", "wb") as errf:
    p = Popen(["cat", __file__], stdout=PIPE, stderr=errf)
    # Read the output from the pipe
    output = p.stdout.read()
    # Write the output to the terminal
    print(output)
    # Ensure the process completes and wait for the output to be fully written
    p.wait()</code>

この例では、パイプ内の stdout をキャプチャし、p.stdout.read() を使用してそれを読み取ります。次に、プロセスが完了し、出力がファイルに完全に書き込まれるまで待機する前に、出力を端末に出力します。これにより、出力が端末に表示されるだけでなく、指定されたファイルに書き込まれることが保証されます。

以上が実行可能出力をファイルとターミナルの両方にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。