J'utilise J'essaie d'obtenir la sortie d'un processus de ligne de commande qui donne un statut de sortie non zéro après la sortie Les informations dont j'ai besoin. p> J'avais initialement à l'origine de en cours d'exécution contre les cas qui donnent une sortie, mais ont un statut de sortie de 0 fonctionner correctement et je peux obtenir la sortie à l'aide de sous-processus.Check_output. P> Mon hypothèse était que la sortie était écrite à stdout mais l'exception tire sa "sortie" de stardr. J'ai essayé de réaliser la mise en œuvre de la fonctionnalité de check_output, mais je n'obtiens toujours rien sur la sortie quand je crois que je devrais voir la sortie à STDOUT et STDERR. Mon code actuel est ci-dessous (où 'Commande' est le texte intégral, y compris les paramètres de commande, je suis en cours d'exécution: p> Cela me donne les éléments suivants dans la sortie variable: < Code> [(((((('', aucune)] code> p> est mon Python 2.7.1 Code> sur une boîte de Server Windows Server 2008 R2 X64.
sous-processus.check_output code> et attrape l'appeléProcessError qui se produit avec le statut de sortie non nul, mais pendant que le code retour a été stocké dans l'erreur, aucune sortie révélé cela. p>
sous-processus.popen code> code correct? p> p>
3 Réponses :
Votre code fonctionne bien. Il s'avère que le processus que vous appelez est probablement émis à CON. Voir l'exemple suivant
subprocess -> native -> ('', None) stderr subproces CalledProcessError.output = stdout native CalledProcessError.output = stderr stdout
Je suis sûr que c'est là que ça va. J'ai été capable de contacter le vendeur et de découvrir des paramètres non documentés supplémentaires qui stropment les statuts de sortie non zéro survenus. Mon script fonctionne maintenant, bien que je voudrais toujours savoir comment capturer la production de con.
Avez-vous essayé Pour également capturer une erreur standard dans le résultat, utilisez
stardr = subprocess.spedout: p>
blockQuote> Voici un code de test: p> sortie: p> starr = subprocess.stdout code> comme mentionné dans la page Python Doc:
Après
.Communicate () code>, vous pouvez utiliser
processus.returncode code> directement au lieu de
processus.poll () code>.
Comment obtenir une sortie de la commande de commande avec Python: Stackoverflow.com/a/20456745/445131