Python sous-processus.Popen.wait() renvoie 0, même si une erreur s'est produite

Je suis en cours d'exécution d'un utilitaire de ligne de commande via Python sous-processus module. J'ai créer un sous-processus.Popen() de l'objet avec les arguments de ligne de commande et stdout=sous-processus.PIPE puis-je utiliser des sous-processus.wait() pour attendre jusqu'à ce que la tâche est à compléter et à retourner le code de retour qui devrait indiquer si la tâche est terminée avec succès.

translate = subprocess.Popen(['gdal_translate', '-of', 'HFA', 'inDataset', 'outDataset'], stdout=subprocess.PIPE)
if translate.wait() == 0: print "Success"
else: print "Fail - %s" % translate.stdout.read()

Si je lance mon script dans l'invite de commande windows, je peux voir les messages fournis par gdal_translate et ils disent qu'il y avait des erreurs qui entraînent l'échec du processus, mais mon script affiche toujours "Succès".

Comment puis-je vérifier pour les erreurs signalées par l'utilitaire de ligne de commande si le code de retour est toujours 0?

Si vous exécutez la commande directement dans le terminal, quel est son code de sortie?
Comment puis-je voir le code de sortie dans le terminal? Ceci est un exemple d'un message d'erreur que j'ai reçu: ERROR 1: path\to\dataset, band 1: IReadBlock failed at X offset 100, Y offset 331
Sur Windows? echo %errorlevel%, Je pense. En bash, il serait echo $?.

OriginalL'auteur Brian | 2012-12-20