¿Cómo recupero el código de salida cuando uso el subprocessmó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 Popeny luego usarlo enPopenlugar desubprocess(or sp).Popenlo que diría que probablemente aumenta la legibilidad y acorta las líneasprocess.communicate()y luego asignarreturncodea 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
.waitmétodo. Esto devolverá el código. Si desea acceder a él más tarde, se almacena como.returncodeen elPopenobjeto.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