Python контролирует stderr и stdout подпроцесса

Я пытаюсь запустить программу (HandBreakCLI) как подпроцесс или поток изнутри python 2.7. Я уже начал его, но не могу понять, как отслеживать его stderr и stdout.

Программа выводит свой статус (% done) и информацию о кодировании в stderr и stdout, соответственно. Я' Я бы хотел иметь возможность периодически получать% done из соответствующего потока.

Я пробовал вызвать subprocess.Popen с stderr и stdout, установленными на PIPE, и с помощью subprocess.communicate, но он сидит и ждет, пока процесс не будет убит или завершен, а затем получит результат. Это не приносит мне особой пользы.

У меня он запущен и работает как поток, но, насколько я могу судить, мне все равно придется вызвать subprocess.Popen, чтобы выполнить программу и столкнуться с той же стеной.

Правильно ли я поступаю? Какие еще варианты у меня есть или как заставить это работать, как описано?

10
задан bstpierre 3 March 2011 в 18:29
поделиться