łapanie stdout w czasie rzeczywistym z podprocesu

chcęsubprocess.Popen() rsync.exe w systemie Windows i wydrukuj stdout w Pythonie.

Mój kod działa, ale nie przechwytuje postępu, dopóki nie zostanie wykonany transfer plików! Chcę wydrukować postęp każdego pliku w czasie rzeczywistym.

Używanie Pythona 3.1 teraz, ponieważ słyszałem, że powinno być lepiej w obsłudze IO.

import subprocess, time, os, sys

cmd = "rsync.exe -vaz -P source/ dest/"
p, line = True, 'start'


p = subprocess.Popen(cmd,
                     shell=True,
                     bufsize=64,
                     stdin=subprocess.PIPE,
                     stderr=subprocess.PIPE,
                     stdout=subprocess.PIPE)

for line in p.stdout:
    print(">>> " + str(line.rstrip()))
    p.stdout.flush()

questionAnswers(12)

yourAnswerToTheQuestion