subprocess によって提供される関数 (call、check_call、check_output) を読み、それぞれがどのように機能し、機能が互いに異なるかを理解しました。私は現在 check_output を使用しているため、stdout にアクセスでき、次のように「try ブロック」を使用して例外をキャッチできます。
# "cmnd" is a string that contains the command along with it's arguments.
try:
cmnd_output = check_output(cmnd, stderr=STDOUT, shell=True, timeout=3, universal_newlines=True);
except CalledProcessError:
print("Status : FAIL")
print("Output: \n{}\n".format(cmnd_output))
私が直面している問題は、例外がスローされ、「cmnd_output」が初期化されておらず、stderr にアクセスできない場合であり、次のエラー メッセージが表示されます。
print("Output: \n{}\n".format(cmnd_output))
UnboundLocalError: local variable 'cmnd_output' referenced before assignment
これは、例外により、try ブロックで「cmnd_output」への割り当てなど、それ以上の処理を行わずに「check_output」がすぐに保釈されるためだと思います。間違っている場合は修正してください。
stderr にアクセスして (stout に送信されても問題ありません)、終了コードにアクセスする方法はありますか。例外がスローされることなく、終了コードに基づいて合格/不合格を手動でチェックできます。
ありがとう、アーメド。