pythonのsubprocessモジュールで外部プロセスを実行する

subprocessモジュールで外部プロセスを実行できる

call、check_call、check_outputと関数があってちょっとずつ挙動が異なる

subprocess.callはプロセスを実行し、returncodeを返す

from subprocess import call

# call
call(["ls", "-l"])
print return_code
# => 0

subprocess.check_callはreturncodeが0でない場合にCalledProcessErrorをraiseする
戻り値はreturncode

from subprocess import check_call, CalledProcessError

# check_call
try:
    check_call(["ls", "-Z"])
except CalledProcessError, e:
    print e.returncode
    #=> 1

subprocess.check_outputはreturncodeが0でない場合にCalledProcessErrorをraiseするのはcheck_callと同じだが
コマンド実行結果を文字列で返す

from subprocess import check_output

# check_output
out = check_output(["ls", "-l"])
print out.__class__
# => <type 'str'>