2014-01-13 2 views
0

У меня есть следующий код Python, в котором я вызываю Makefile, вставив команду bash из сценария python. Я хочу проверить, сообщается ли о предупреждении о стандартном выпуске. Я вижу предупреждение на stdout, но мой код Python, похоже, не обнаруживает его.Невозможно правильно разобрать вывод bash из Python

Python код:

maker = subprocess.Popen(["bash", "-c", "make"], stdout=subprocess.PIPE) 
    for line in maker.stdout: 
     if "warning:" in line: 
      print "Warning(s) detected in make"     

выход на стандартный вывод, который ясно сообщает предупреждение:

main.c: In function ‘main’: 
main.c:46:14: warning: unused variable ‘options’ [-Wunused-variable] 
+2

Сообщения об ошибках компилятора печатаются по стандартной ошибке, а не по стандартным выводам. – Barmar

ответ

4

Попробуйте поймать STDERR, а также:

subprocess.Popen(["bash", "-c", "make"], stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

(пользователя "Barmar" уже отмечено, сообщения об ошибках компилятора отправляются в stderr.)

+0

@ Спасибо, Майкл, это сделано, был грубым недосмотром с моей стороны! –

Смежные вопросы