🙆
Pythonのsubprocessモジュール
subprocessモジュールを使うとPythonでシェルスクリプトを実行することができます。この性質を使い、python ~.pyを実行することで、PythonでPythonを実行することができます。
subprocessモジュールとは
Python のプログラムから他のアプリを起動したり、実行結果を得たりするモジュール
subprocess的Hello World!
シェルスクリプトで
echo "Hello World!"
と入力すると、Hello World!
が出力されます。それをsubprocessを使って書くと、こうなります
import subprocess
from subprocess import PIPE
result = subprocess.run('echo \"Hello World!\"', shell=True, stdout=PIPE, stderr=PIPE)
out = result.stdout
print('out')
subprocessは、サブプロセス、つまりいまPythonを実行しているプロセスとは別プロセス(正確には子プロセス)なので、実行結果の出力や入力にはPIPEによってつなぐことにより実現が可能。
shell=True
これしないと、ファイル名として引数が処理されてエラーになる。
'echo \"hello world!\"'
シェルではecho "Hello World!"
で良いが、Pythonでの記述上、ダブルクオーテーションは、エスケープ記号\
を前に置いてやらないと、Pythonの文字列用表記として捕らえられてしまい、正常な処理が行えない。
Discussion