Comment récupérer le code de sortie lors de l'utilisation du subprocess
module et de la communicate()
méthode de Python ?
Code pertinent:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
Dois-je faire cela d'une autre manière?
python
subprocess
Carpe Noctem
la source
la source
from subprocess import Popen
, puis l'utiliser à laPopen
place desubprocess(or sp).Popen
ce qui, je dirais, augmente probablement la lisibilité et raccourcit les lignesprocess.communicate()
puis assignerreturncode
à une variable. Si l'affectation est effectuée avant d'appelercommunicate
, c'estNone
.Vous devez d'abord vous assurer que le processus est terminé et que le code de retour a été lu à l'aide de la
.wait
méthode. Cela renverra le code. Si vous souhaitez y accéder plus tard, il est stocké comme.returncode
dans l'Popen
objet.la source
.communicate()
attend déjà la fin du sous-processus..poll()
mettra à jour le code de retour.Essayer
De plus, après
.poll()
est appelé le code retour est disponible dans l'objet sous la formechild.returncode
.la source
exitcode = data.wait()
. Le processus enfant sera bloqué s'il écrit sur la sortie / erreur standard et / ou lit à partir de l'entrée standard, et qu'il n'y a pas d'homologues.la source
Cela a fonctionné pour moi. Il imprime également la sortie renvoyée par le processus enfant
la source