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コマンドを実行する際の基本的な方法です。これらの知識を活用して、Pythonでより効率的なコードを書くことができます。