Database JUNKY

MySQL,MariaDBを中心としたブログです

python3から外部shellを実行する

以下は、python3から、bashを外部実行しているメモになります

f:id:hit10231023:20180302202040p:plain

外部shellを実行する場合は、subprocess ライブラリを使うっぽい。

と、まだ、全然pythonわかっていないのですが(汗)

記述としては

import subprocess

といった形で宣言する。。といった感じですかね

パラメータ付き

bash実行の際に、

$ /usr/local/shell.sh 111

みたいな感じで実行するshellの場合は、

subprocess.runでは、以下のようにかく感じ

subprocess.run(["/usr/local/shell.sh", "111"])

パラメータ無し

こんな感じになるのかな?

subprocess.run(["/usr/local/shell.sh"]

一点、注意があって、外部プロシージャを実行した際に、pythonからこんなエラーを出力されたことがあるのですが、

OSError: [Errno 8] Exec format error

一瞬ぱにくって、色々と調べたら、読んで字のごとくではないですが、

ちゃんと実行するshell側に、例えば今回、bashですが

#!/bin/bash

って書いてくれないと、なんのshell実行するかわかんないよってことらしいw