Я называю внешний двоичный с помощью модуля подпроцесс:Python подпроцессов Подавите стандартный вывод и стандартный поток ошибок
try:
subprocess.check_output([param1, param2], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
print(e.output)
Это выводит ошибку как при check_output
прогонов и в заявлении, за исключением. Я действительно хочу, чтобы напечатать вывод , только если я поймаю исключение. Итак, это означает, что я хочу иметь stderr в объекте исключения.
Проблема заключается в том, что если я подавить стандартный вывод:
subprocess.check_output(..., stdout=open(sys.os.devnull, 'wb'))
Тогда e.output
уверен, становится пустым. Также я попытался установить stderr в None - тот же эффект.
Как добавить stderr
к экземпляру subprocess.CalledProcessError
без перенаправления stderr
к stdout
, потому что мне не нужно stdout
вообще.
http://stackoverflow.com/questions/17352163/collecting-stderr-in-memory-with-subprocess-call –
не печатать 'e.output' id, вы хотите только один раз увидеть ошибку:' subprocess.check_output ([param1, param2]) 'и использовать проход вместо печати –
Это просто пример. В реальном приложении я делаю повторное исключение, которое затем используется для создания jsonified сообщения об ошибке. – Glueon