ホームページ  >  記事  >  バックエンド開発  >  Python でファイルとターミナルへの出力を同時にサブプロセスする方法は?

Python でファイルとターミナルへの出力を同時にサブプロセスする方法は?

DDD
DDDオリジナル
2024-11-03 21:46:31140ブラウズ

How to Tee Subprocess Output to Files and Terminal Simultaneously in Python?

ファイルと端末へのサブプロセス出力の同時実行

Python の subprocess.call() メソッドを使用すると、外部コマンドを実行できます。ただし、デフォルトでは、出力は端末に送信されます。この記事では、ファイルとターミナルの両方に出力を同時に書き込む方法について説明します。

その答えは、実行プロセスをより詳細に制御できる Popen() 関数を直接使用することにあります。 stdout=PIPE を指定すると、プロセスの stdout ストリームから読み取ることができます。目的の動作を実現するには、次の手順に従います。

  1. T 関数の作成: 入力ファイルから読み取り、複数の出力ファイルに書き込む関数を定義します。この関数は別のスレッドで実行され、メイン プロセスがブロックされないようにします。
  2. Teed_Call 関数で Tee 関数を使用する: Popen() を呼び出す teed_call() という名前のラッパー関数を作成します。 stdout=PIPE および stderr=PIPE。 tee() 関数を使用して、stdout ストリームと stderr ストリームをファイルと端末の両方に書き込みます。
  3. Teeing でコマンドを実行する: 必要なコマンド引数を指定して teed_call() を呼び出し、 stdout パラメータと stderr パラメータを使用して出力ファイルを作成します。
  4. 出力完了を待機します: コマンドの実行後、tee() 関数によって作成されたスレッドに参加して、続行する前にすべての出力が書き込まれることを確認します。 .

回答で提供されているコード例は、teed_call() 関数を使用して、cat、echo、gcc などのさまざまなコマンドの stdout および stderr ストリームを確認する方法を示しています。

以上がPython でファイルとターミナルへの出力を同時にサブプロセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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