Python のサブプロセスによる出力リダイレクト: ファイルとターミナルの同時実行
Python の subprocess.call 関数を利用して複数の実行可能ファイルを実行する場合、ユーザーは次のことを望むかもしれません。これを実現するには、subprocess.call を使用する代わりに、stdout=PIPE 引数を指定して Popen 関数を直接使用します。これにより、p.stdout:
からの読み取りが可能になります。この変更された関数を使用すると、ユーザーは端末に出力しながら stdout および stderr のファイルを指定できます。例:import sys from subprocess import Popen, PIPE def tee(infile, *files): for line in iter(infile.readline, b""): for f in files: f.write(line) def teed_call(cmd_args, stdout=None, stderr=None): p = Popen( cmd_args, stdout=PIPE if stdout is not None else None, stderr=PIPE if stderr is not None else None ) if stdout is not None: tee(p.stdout, stdout, getattr(sys.stdout, "buffer", sys.stdout)) if stderr is not None: tee(p.stderr, stderr, getattr(sys.stderr, "buffer", sys.stderr)) for t in threads: t.join() return p.wait()
以上がPython で stdout と stderr の両方をサブプロセスからファイルとターミナルに同時にリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。