Я использую Python 2.7.1
на Windows Server 2008 R2 x64 box.
Я пытаюсь получить выходные данные процесса командной строки, который дает ненулевой статус выхода после вывода необходимой мне информации.
Первоначально я использовал subprocess.check_output
и перехватывал CalledProcessError, которая происходит с ненулевым состоянием выхода, но хотя код возврата был сохранен в ошибке, никакой вывод не выявил этого.
Выполнение этого для случаев, которые дают выходные данные, но имеют состояние выхода 0, работает правильно, и я могу получить выходные данные, используя subprocess.check_output.
Я предполагал, что выходные данные записывались в STDOUTно исключение извлекает свой «вывод» из STDERR.Я попытался реализовать функциональность check_output, но я все равно ничего не получаю на выходе, когда считаю, что должен видеть вывод на STDOUT и STDERR.Мой текущий код приведен ниже (где «команда» - это полный текст, включая параметры, команды, которую я выполняю:
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
raise subprocess.CalledProcessError(retcode, image_check, output=output)
return output
Это дает мне следующее в выводе переменной: [('', None)]
Мой subprocess.Popen
код правильный?