sous-processus.check_output code de retour
Je suis en utilisant:
grepOut = subprocess.check_output("grep " + search + " tmp", shell=True)
Pour exécuter une commande de terminal, je sais que je peux utiliser un try/except pour rattraper l'erreur, mais comment puis-je obtenir la valeur du code d'erreur?
J'ai trouvé ceci sur la documentation officielle:
exception subprocess.CalledProcessError
Exception raised when a process run by check_call() or check_output() returns a non-zero exit status.
returncode
Exit status of the child process.
Mais il n'y a pas des exemples donnés et Google a été d'aucune aide.
- "Google a été d'aucune aide": le premier lien (on y est presque, il montre
e.output
), la deuxième lien est la correspondance exacte (il montree.returncode
) le terme de recherche:CalledProcessError
.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez obtenir le code d'erreur et les résultats de l'exception qui est levée.
Cela peut être fait à travers les champs
returncode
etoutput
.Par exemple:
check_output
lève une exception si elle reçoit non nulle, car il signifie souvent qu'un échec de la commande.grep
peut retourner une valeur non-nulle, même si il n'y a pas d'erreur, vous pouvez utiliser.communicate()
dans ce cas:Vous n'avez pas besoin de faire appel à une commande externe pour filtrer les lignes, vous pouvez le faire en pure Python:
Si vous n'avez pas besoin de la sortie; vous pouvez utiliser
subprocess.call()
:Python 3.5 introduit la
sous-processus.run()
méthode. La signature ressemble:Le résultat retourné est un
sous-processus.CompletedProcess
. En 3.5, vous pouvez accéder à laargs
,returncode
,stdout
, etstderr
d'exécution du processus.Exemple: