Получение обновленного вывода в реальном времени с помощью подпроцесса

#python

#python

Вопрос:

У меня есть код python, который выполняет scp команду и пытается обработать вывод.

 def execute(command):
    with subprocess.Popen(shlex.split(command), stdout=subprocess.PIPE, universal_newlines=True) as p:
        for line in p.stdout:
            print(line, end='') # process line here

    return p.returncode
 

Однако scp имеет индикатор выполнения, и этот код полностью пропускает его. Код python ничего не печатает и просто ждет scp завершения.

Есть ли какой-либо способ получить этот прогресс subprocess ?

Ответ №1:

Я полагаю, что в python подпроцесс выполняется синхронно, поэтому все выходные данные сбрасываются одновременно. asyncio должен быть полезен.