🙆

Pythonのsubprocessモジュール

2020/12/26に公開

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