Pythonのsubprocess
モジュールは、新しいプロセスを生成し、その入出力/エラーパイプに接続し、戻りコードを取得することができます。このモジュールは、os.system
やos.spawn*
などの古いモジュールや関数を置き換えることを目指しています。
subprocess
モジュールを使用する推奨されるアプローチは、run()
関数を使用することです。より高度なユースケースの場合、基礎となるPopen
インターフェースを直接使用することができます。
subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, capture_output=False, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, text=None, env=None, universal_newlines=None, **other_popen_kwargs)
この関数は、args
で記述されたコマンドを実行し、コマンドが完了するのを待ってからCompletedProcess
インスタンスを返します。
env
引数がNone
でない場合、それは新しいプロセスの環境変数を定義するマッピングでなければなりません。これらは、現在のプロセスの環境を継承するデフォルトの動作の代わりに使用されます。
import subprocess, os
my_env = os.environ.copy()
my_env["PATH"] = "/usr/sbin:/sbin:" + my_env["PATH"]
subprocess.Popen(my_command, env=my_env)
このコードスニペットは、現在の環境をコピーし、PATH
環境変数を変更し、その変更された環境で新しいプロセスを開始します。
以上がPythonのsubprocess
モジュールと環境変数の管理についての基本的な情報です。この情報がPythonとsubprocess
モジュールの理解に役立つことを願っています。