Считать из подпроцесса stdout / stderr и распечатать его на экране по мере его создания сложно, потому что легко зайти в тупик. Есть ли недостаток в перенаправлении подпроцесса stdout / stderr вместо sys.stdout / sys.stderr, что кажется намного проще? Пример кода:
import shlex
import subprocess
import time
def run(command):
p = subprocess.Popen(shlex.split(command), stdout=sys.stdout, stderr=sys.stderr)
while True:
return_code = p.poll()
if return_code is not None:
if return_code > 0:
raise Exception("Command %s failed" % command)
break
else:
time.sleep(1)