¿Cómo recupero el código de salida cuando uso el subprocess
módulo y el communicate()
método de Python ?
Código relevante:
import subprocess as sp
data = sp.Popen(openRTSP + opts.split(), stdout=sp.PIPE).communicate()[0]
¿Debería estar haciendo esto de otra manera?
python
subprocess
CarpeNoctem
fuente
fuente
from subprocess import Popen
y luego usarlo enPopen
lugar desubprocess(or sp).Popen
lo que diría que probablemente aumenta la legibilidad y acorta las líneasprocess.communicate()
y luego asignarreturncode
a alguna variable. Si la asignación se realiza antes de llamarcommunicate
, esNone
.Primero debe asegurarse de que el proceso se haya completado y que el código de retorno se haya leído utilizando el
.wait
método. Esto devolverá el código. Si desea acceder a él más tarde, se almacena como.returncode
en elPopen
objeto.fuente
.communicate()
ya espera a que finalice el subproceso..poll()
actualizará el código de retorno.Tratar
Además, después de que
.poll()
se llama, el código de retorno está disponible en el objeto comochild.returncode
.fuente
exitcode = data.wait()
. El proceso secundario se bloqueará si escribe en la salida / error estándar, y / o lee desde la entrada estándar, y no hay pares.fuente
Esto funcionó para mí. También imprime el resultado devuelto por el proceso secundario
fuente