2014-02-14 3 views
1

Я искал достаточно тщательно для ответа, но не нашел для этого никаких решений.Как читать выходные данные из подпроцесса без печати на терминал?

Мне нужно выполнить дочерний процесс только на мгновение, чтобы распечатать информацию о его версии. Если запустить из командной строки, это просто

.\bin\application.exe --version 

и информация о версии печатается на терминал. Я хотел бы захватить эту информацию в строке. Я опробовал варианты

не имеет успеха. Мне также нужно, чтобы это не печатало вывод на терминал, если это было возможно. Что я могу сделать?

+4

Является приложением печати информации о версии для STDERR? Попробуйте добавить 'stderr = subprocess.STDOUT' к вашему вызову« Popen »и посмотреть, что произойдет. –

+0

Так оно и было, спасибо :) – swingsoneto

+0

Рад помочь! Я добавил ответ для лучшей видимости для людей, которые сталкиваются с этим вопросом позже. –

ответ

3

Иногда приложения записывают информацию о версии в STDERR вместо STDOUT.

Вы можете захватить и как это:

args = ("path\to\application.exe", "--version") 
subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT).communicate()[0] 
Смежные вопросы