Estoy utilizando Python 2.7.1
en un cuadro de Windows Server 2008 R2 x64.Python: obtener salida de una línea de comando que sale con código de salida distinto de cero
Estoy tratando de obtener el resultado de un proceso de línea de comando que da un estado de salida distinto de cero después de generar la información que necesito.
Al principio estaba usando subprocess.check_output
, y capturando el CalledProcessError que se produce con un estado de salida distinto de cero, pero mientras el código de retorno se almacenaba en el error, ningún resultado de salida lo reveló.
Ejecutando esto en casos que dan salida pero tienen un estado de salida de 0 funciona correctamente y puedo obtener la salida usando subprocess.check_output.
Mi suposición era que la salida se escribía en STDOUT pero la excepción saca su 'salida' de STDERR. Intenté volver a implementar la funcionalidad de check_output, pero todavía no recibo nada en la salida cuando creo que debería estar viendo salida en STDOUT y STDERR. Mi código actual está por debajo (donde 'comando' es el texto completo, incluyendo los parámetros, de mando Me postulo:
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
raise subprocess.CalledProcessError(retcode, image_check, output=output)
return output
Esto me da lo siguiente en la salida variable:
es mi código subprocess.Popen
correcto?
después de '.communicate()', puede usar 'process.returncode' directamente en lugar de' process.poll() '. – jfs
Cómo obtener resultados desde la línea de comandos con Python: http://stackoverflow.com/a/20456745/445131 –