Получите вывод с check_output даже при ненулевом статусе выхода
Я использую subprocess.check_output
несколько раз в моем сценарии, но я просто столкнулся с проблемой с внешним приложением. OpenVPN
в этом случае.
Когда openvpn вызывается с --help
параметр, который я хочу проанализировать в моем скрипте, он возвращает 1
как его код выхода. check_ouput
дросселирует ненулевой код выхода и завершается с сообщением:
subprocess.CalledProcessError: Command '['openvpn', '--help']' returned non-zero exit status 1
Q: Я не понимаю, почему openvpn делает это, но как мне это сделать? check_output
дать мне вывод, даже с ненулевым кодом возврата?
редактировать: я использовал точно такой же код с --show-digests
или другие параметры, и все, казалось, работает просто отлично.
output = check_output(["openvpn", "--show-digests"])
1 ответ
Решение
В соответствии с документами, выход доступен в .output
атрибут CalledProcessError
исключение.
Так что-то вроде этого должно работать:
try:
result = subprocess.check_output(...).stdout
except subprocess.CalledProcessError as exc:
result = exc.output