2010-03-20 14 views
1

Dans mon script python, j'ai besoin d'appeler dans une boucle for un exécutable, et d'attendre que cet exécutable écrive le résultat sur le fichier "output.xml".Boucler un exécutable pour obtenir le résultat du script Python

Comment puis-je utiliser wait() & comment puis-je savoir quand un de mes exécutables a fini de générer le résultat pour obtenir le résultat? Comment puis-je fermer ce processus et en ouvrir un nouveau pour rappeler l'exécutable et attendre le nouveau résultat?

import subprocess 
    args = ("bin/bar") 
    popen = subprocess.Popen(args) 

J'ai besoin d'attendre la sortie de « bin/bar » pour générer le « output.xml » et à partir de là, lire son contenu.

for index, result in enumerate(results): 
     myModule.callSubProcess(index) 
     #this is where the problem is. 
     fileOutput = open("output.xml") 
     parseAndStoreInSQLiteFileOutput(index, file) 

Répondre

1

Popen.wait() fera attendre le script jusqu'à la fin du processus. Il n'est pas nécessaire de tuer le processus après, car il aura déjà quitté.

1

Je pense que la meilleure façon de le faire est d'utiliser call:

import subprocess 
retcode = subprocess.call('command', shell=True) 

Il attend la fin du processus et attribuer le code de retour à la variable. Pour une description plus détaillée, voir 17.1.subprocess - convenience functions dans la documentation python. J'espère que cela aide.