\

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でより効率的なコードを書くことができます。

投稿者 admin

コメントを残す

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