Pythonから外部コマンドを実行する
関数がいくつかあってややこしいのでメモ。
非推奨の方法
osモジュールや、commandsモジュールを使う方法は古いので非推奨となっている。
osモジュールを使う
osモジュールのsystem()を使う。この関数は標準 C 関数のsystem() を使って実装されている。戻り値はプロセスの終了ステータスで成功時は0を返す。
import os os.system('ls')
commandsモジュールを使う
commandsモジュールのgetstatusoutput()とgetoutput()をつかうことができる。
getstatusoutput()は、コマンドを実行したプロセスの終了ステータスと結果のタプル(status, output)を返す。
import commands commands.getstatusoutput('ls')
getoutput()は、コマンドを実行した結果のみを返す。
commands.getoutput('ls')
推奨されている方法
subprocessモジュールのcall()や、check_call()、check_output()を使う。
call()は、プロセスの終了ステータスを返す。
import subprocess subprocess.call('ls')
check_call()はそれに加え、エラー時には例外を投げる。
subprocess.check_call('ls')
check_output()はコマンドを実行した結果を返し、エラー時には例外を投げる。
subprocess.check_output('ls')