PythonでOSコマンドを実行する方法はバージョンによって色々ありますが、今回はsubprocess.run
の利用方法をまとめてみます。
基本的な使い方
subprocess.run
は引数のコマンドを同期処理で実行します。コマンドをそのまま文字列として実行したい場合は、shell=True
を指定します。
import subprocess
subprocess.run(['ls', '-al'])
command = 'ls -al'
ret = subprocess.run(command, shell=True)
print(ret)
戻り値の確認と標準出力、エラー出力のキャプチャ
capture_output=True
のオプションを利用すると標準出力、エラー出力をキャプチャすることが出来ます。
command = 'ls -al'
ret = subprocess.run(command, shell=True, capture_output=True, text=True)
print(ret.returncode)
print('stdout:' + ret.stdout)
print('stderr:' + ret.stderr)
例外処理
コマンドの実行結果を1つ1つチェックする代わりに例外処理を利用することも出来ます。
import subprocess
try:
command = 'mkdir @/@'
ret = subprocess.run(command, shell=True, capture_output=True, text=True, check=True)
print(ret.returncode)
print('stdout:' + ret.stdout)
except subprocess.CalledProcessError as cpe:
print('returncode:' + str(cpe.returncode))
print('stderr:' + cpe.stderr)
print('cmd:' + cpe.cmd)
raise cpe
以上、PythonでOSコマンドを実行する方法について、subprocess.run
の利用方法をまとめてみました。この情報がPythonのコーディングに役立つことを願っています。