Я пытаюсь запустить wrap простого (windows) инструмента командной строки в приложении PyQt GUI, которое я пишу. Проблема, с которой я столкнулся, состоит в том, что инструмент командной строки выводит свой прогресс в стандартный вывод (это команда сброса сервера, поэтому вы получаете вывод типа «Попытка остановить» и «Перезапуск».
То, что я пытаюсь сделать, это захватить вывод, чтобы я мог отобразить его как часть моего приложения. Я предполагал, что было бы довольно просто сделать что-то вроде следующего:
import os
import subprocess as sub
cmd = "COMMAND LINE APP NAME -ARGS"
proc = sub.Popen(cmd, shell=True, stdout=sub.PIPE).stdout
while 1:
line = proc.readline()
if not line:
break
print line
Это частично работает в том смысле, что я получаю содержимое StdOut, но вместо того, чтобы отправлять сообщения о ходе выполнения, я получаю его после выхода из приложения командной строки и, кажется, сбрасывает StdOut за один раз.
Есть простой ответ?