私は次のことをしたいと思います:
- を使用して、Python から別の実行可能ファイルにシェルアウトします。
subprocess.check_call
- 子プロセスの stderr をキャッチします (存在する場合)
- 親プロセスからの CalledProcessError 例外出力に stderr 出力を追加します。
理論的には、これは簡単です。check_call
関数シグネチャには、次の kwarg が含まれていstderr
ます。
subprocess.check_call(args, *, stdin=None, stdout=None, stderr=None, shell=False)
ただし、そのすぐ下のドキュメントには次の警告が含まれています。
注:この関数と一緒に
stdout=PIPE
orを使用しないでください。stderr=PIPE
パイプは現在のプロセスで読み取られていないため、OS パイプ バッファーをいっぱいにするのに十分な出力をパイプに生成すると、子プロセスがブロックされる可能性があります。
問題は、子プロセスから stderr を取得するために見つけることができるほとんどすべての例が、subprocess.PIPE
その出力をキャプチャするために使用することを言及していることです。
を使用せずに子プロセスから stderr をキャプチャするにはどうすればよいですsubprocess.PIPE
か?