Python には、失敗する可能性のあるサブプロセスを呼び出すための便利な関数が 2 つ用意されていsubprocess.check_call
ますsubprocess.check_output
。基本的、
subprocess.check_call(['command', 'arg1', ...])
指定されたコマンドをサブプロセスとして生成し、ブロックして、サブプロセスが正常に終了したことを確認します(0 が返されます)。そうでない場合は、例外をスローします。check_output
サブプロセスの stdout をキャプチャしてバイト文字列として返すことを除いて、同じことを行います。
これは単一の Python 式であるため (数行のコードでサブプロセスを設定および制御する必要がない)、戻り値のチェックを忘れるリスクがないため便利です。
check_call
とに相当する慣用的な Ruby は何check_output
ですか? プロセスの戻り値を与えるグローバルは知って$?
いますが、それは扱いにくいでしょう。例外があることのポイントは、手動でエラー コードをチェックする必要がないことです。Rubyでサブプロセスを生成する方法は多数ありますが、この機能を提供する方法はありません。