Получите вывод с 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
Другие вопросы по тегам