Pythonのsubprocess
モジュールは新しいプロセスの開始、入力/出力/エラーパイプの接続、リターンコードの取得を可能とします。このモジュールは、os.system
やos.spawn*
などの古いモジュールや関数を置き換えることを目的としています。
subprocess.callの使用
subprocess.call
を使用すると、コマンドを実行することができます。以下にその使用例を示します。
import subprocess
cmd = "sleep 30"
proc = subprocess.call(cmd, shell=True)
このコードは、sleep 30
というコマンドを実行します。このコマンドは、30秒間プログラムの実行を停止します。subprocess.call
は、コマンドの終了を待つため、この行が終了するまでプログラムはブロックされます。
subprocess.Popenの使用
subprocess.Popen
を使用すると、新しいプロセスを起動し、そのプロセスの制御を手に入れることができます。以下にその使用例を示します。
from subprocess import Popen
cmd = "sleep 30"
proc = Popen(cmd.strip().split(" "))
このコードは、sleep 30
というコマンドを実行します。しかし、Popen
はコマンドの終了を待たずに新しいプロセスを起動するため、この行が終了した後もプログラムは実行を続けます。
終了コードの取得
subprocess.run
関数を使用すると、コマンドの終了コードを取得することができます。終了コードは、コマンドが成功したかどうかを示す値で、0は成功を、非0はエラーを示します。
以上がPythonのsubprocess
モジュールの基本的な使用方法です。これらの機能を利用することで、Pythonから他のプログラムを効率的に制御することが可能となります。.