Pythonとsubprocessモジュールの基本
Pythonのsubprocess
モジュールは、新しいプロセスを作成し、その入出力を扱うための強力なツールです。このモジュールを使うと、Pythonスクリプトからシェルコマンドを実行したり、他のプログラムを制御したりすることができます。
subprocessモジュールのインポート
まずはじめに、subprocess
モジュールをインポートします。
import subprocess
コマンドの実行
subprocess
モジュールのrun
関数を使って、シェルコマンドを実行することができます。以下はその例です。
subprocess.run(["ls", "-l"])
このコードは、ls -l
コマンドを実行します。run
関数の引数は、実行するコマンドとその引数を要素とするリストです。
プロセスの作成と制御
より高度な制御が必要な場合は、Popen
クラスを使用します。Popen
オブジェクトを作成すると、新しいプロセスが開始されます。
p = subprocess.Popen(["ls", "-l"])
このコードもls -l
コマンドを実行しますが、Popen
オブジェクトを通じてプロセスを制御することができます。
以上が、Pythonとsubprocessモジュールの基本的な使い方です。次のセクションでは、subprocess.Popen
の詳細な使い方について説明します。
subprocess.Popenの使い方
Pythonのsubprocess.Popen
は、新しいプロセスを作成し、その入出力を扱うためのクラスです。以下にその基本的な使い方を説明します。
Popenオブジェクトの作成
まずはじめに、Popen
クラスのインスタンスを作成します。以下はその例です。
p = subprocess.Popen(["ls", "-l"])
このコードは、新しいプロセスを作成し、そのプロセスでls -l
コマンドを実行します。Popen
の引数は、実行するコマンドとその引数を要素とするリストです。
プロセスの制御
Popen
オブジェクトを作成した後、そのオブジェクトのメソッドを使ってプロセスを制御することができます。
例えば、wait
メソッドを使うと、プロセスが終了するまで待つことができます。
p.wait()
このコードは、p
プロセスが終了するまで待ちます。
以上が、Pythonのsubprocess.Popen
の基本的な使い方です。次のセクションでは、コマンド実行と終了待ちの方法について説明します。
コマンド実行と終了待ちの方法
Pythonのsubprocess.Popen
を使って、コマンドを実行し、その終了を待つ方法について説明します。
コマンドの実行
まずはじめに、Popen
クラスのインスタンスを作成し、コマンドを実行します。以下はその例です。
p = subprocess.Popen(["ls", "-l"])
このコードは、新しいプロセスを作成し、そのプロセスでls -l
コマンドを実行します。Popen
の引数は、実行するコマンドとその引数を要素とするリストです。
終了の待ち
コマンドの実行後、その終了を待つにはwait
メソッドを使用します。
p.wait()
このコードは、p
プロセスが終了するまで待ちます。wait
メソッドは、プロセスが終了するとその終了ステータスを返します。
以上が、Pythonのsubprocess.Popen
を使ったコマンド実行と終了待ちの方法です。次のセクションでは、subprocess.Popen
の応用例について説明します。
subprocess.Popenの応用例
Pythonのsubprocess.Popen
は、新しいプロセスを作成し、その入出力を扱うためのクラスです。以下にその応用例を説明します。
標準出力の取得
Popen
クラスのcommunicate
メソッドを使うと、プロセスの標準出力を取得することができます。以下はその例です。
p = subprocess.Popen(["ls", "-l"], stdout=subprocess.PIPE)
stdout, stderr = p.communicate()
print(stdout.decode())
このコードは、新しいプロセスを作成し、そのプロセスでls -l
コマンドを実行します。そして、communicate
メソッドを使って、標準出力を取得し、表示します。
エラーハンドリング
Popen
クラスのreturncode
属性を使うと、プロセスの終了ステータスを取得することができます。これを使って、エラーハンドリングを行うことができます。
p = subprocess.Popen(["ls", "-l"])
p.wait()
if p.returncode != 0:
print("Error occurred")
このコードは、新しいプロセスを作成し、そのプロセスでls -l
コマンドを実行します。そして、wait
メソッドとreturncode
属性を使って、エラーハンドリングを行います。
以上が、Pythonのsubprocess.Popen
の応用例です。これらの技術を活用することで、Pythonから他のプログラムを効果的に制御することができます。