Si vous voulez simplement exécuter l'exécutable et attendre les résultats, la solution d'Anurag est probablement la meilleure. J'avais besoin de répondre à chaque ligne de sortie à son arrivée, et j'ai trouvé ce qui suit:
1) Créer un objet avec une méthode d'écriture (texte). Redirige stdout vers celui-ci (sys.stdout = obj). Dans votre méthode d'écriture, traitez la sortie comme elle arrive.
2) Exécuter une méthode dans un fil séparé avec quelque chose comme le code suivant: Parce que vous avez redirigé stdout
p = subprocess.Popen('Text/to/execute with-arg', stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=False)
while p.poll() is None:
print p.stdout.readline().strip()
, PIPE envoyer la sortie à votre méthode d'écriture ligne par ligne. Si vous n'êtes pas certain que vous allez obtenir des sauts de ligne, lire (montant) fonctionne aussi, je crois.
3) Rappelez-vous de rediriger stdout par défaut: sys.stdout = __sys.stdout__
comment utiliser ce sous-processus? – Kim
Voir http://docs.python.org/library/subprocess.html#replacing-os-system. –
Rappelez-vous que le symbole de pipe diffère entre les systèmes d'exploitation lorsque vous essayez d'utiliser os.system pour rediriger les choses ... – mavnn