\

Pythonのsubprocessモジュールは、OSコマンドを実行するための強力なツールです。この記事では、Ubuntu環境でPythonのsubprocessモジュールを使う方法について説明します。

subprocess.runの基本

subprocess.runは引数のコマンドを同期処理で実行します。コマンドをそのまま文字列として実行したい場合は、shell=Trueを指定します。しかし、shell=Trueは脆弱性にもつながるので利用には注意が必要です。

import subprocess
subprocess.run(['ls', '-al'])
command = 'ls -al'
ret = subprocess.run(command, shell=True)
print(ret)

上記のコードは、ls -alコマンドを実行し、その結果を表示します。

戻り値の確認と標準出力、エラー出力のキャプチャ

capture_output=Trueのオプションを利用すると標準出力、エラー出力をキャプチャすることができます。戻り値のret.stdoutret.stderrで参照に可能になりますが、この戻り値はバイトデータなのでdecodeが必要です。text=Trueのオプションをつけるとdecodeした結果が格納されます。

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)

このコードは、ls -alコマンドを実行し、その結果、標準出力、エラー出力を表示します。

まとめ

Pythonのsubprocessモジュールは、OSコマンドを実行するための強力なツールです。しかし、その使用には注意が必要です。特に、shell=Trueを使用するときは、脆弱性に注意しなければなりません。また、subprocess.runの戻り値はバイトデータなので、適切にdecodeする必要があります。.

投稿者 admin

コメントを残す

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