Вывод subprocess.popen () в реальном времени, а не строка за строкой

В настоящее время я переписываю небольшую программу-оболочку на Python, которую я когда-то написал на C ++. Он извлекает файлы из файла и помещает их в другой формат.

В C ++ вывод системных команд, которые мне нужно запустить, был «в реальном времени», т.е. строка состояния и процентный индикатор некоторых команд отображались в реальном времени. С python я получаю каждый «процент» на экране отдельно (потому что я читаю его построчно). Вот пример: Так выглядит строка состояния в версии для Python (это продолжается до 100). Однако в C ++ он обновляется.

| (02/100)\rImporting AVC-H264: |                    | (03/100)\rImporting AVC-H264: |                       | (04/100)\rImporting AVC-H264: |=

Это соответствующий код на Python:

p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
for line in iter(p.stdout.readline, ""):
   print line,

Есть идеи, как сделать так, чтобы это выглядело на C ++?

5
задан Basil 6 January 2011 в 22:16
поделиться