Извлечение стандартного вывода из подпроцесса в Windows - PullRequest
1 голос
/ 19 августа 2010

Я могу вызвать FFmpeg с помощью subprocess.Popen и получить нужные мне данные, как это происходит (для получения прогресса), но только в консоли. Я посмотрел вокруг и увидел, что вы не можете получить данные "вживую" при работе с pythonw . Тем не менее, ожидание, пока процесс не завершит извлечение данных, является спорным, так как я пытаюсь обернуть PyQT GUI вокруг FFmpeg, чтобы у меня были красивые индикаторы выполнения и все такое. Итак, вопрос в том, можете ли вы получить «живые» данные из вызова подпроцесса при использовании pythonw?

Я еще не пробовал просто скомпилировать приложение с py2exe как приложение для Windows, это решит проблему?

Ответы [ 2 ]

4 голосов
/ 19 августа 2010
process = subprocess.Popen(your_cmd, shell=true, stdout=subprocess.PIPE,
                           stderr=subprocess.STDOUT)

count=0
while True:
    buff = process.stdout.readline()

    if buff == '':
        count += 1

    if buff == '' and process.poll() != None:
        break

    sys.stdout.write(buff)

process.wait()
0 голосов
/ 19 августа 2010

При вызове подпроцесса. Откройте, используйте stdout=subprocess.PIPE.Тогда вы сможете читать из процесса .stdout.

...