Pythonのsubprocessモジュールは、新しいプロセスを生成し、その入出力/エラーパイプに接続し、戻りコードを取得することができます。このモジュールは、os.systemos.spawn*などの古いモジュールや関数を置き換えることを目指しています。

subprocess.run()subprocess.Popen()は、このモジュールの主要な関数であり、それぞれ異なる使用ケースに対応しています。

subprocess.run()は、コマンドを実行し、その完了を待つ関数です。この関数は、コマンドの実行とその結果の取得が必要な場合に使用します。

一方、subprocess.Popen()は、より高度な使用ケースに対応しています。subprocess.Popen()は、プロセスを生成するだけで、終了を待たないという特徴があります。そのため、プロセスが終了するまで他の処理を続けることができます。

以下に、それぞれの関数の使用例を示します。

import subprocess

# subprocess.run()の使用例
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode('utf-8'))

# subprocess.Popen()の使用例
p = subprocess.Popen(['ls', '-l'], stdout=subprocess.PIPE)
print(p.communicate()[0].decode('utf-8'))

これらの関数を適切に使用することで、Pythonから外部コマンドを効率的に制御することができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です