Códigos de salida en Python
Recibí un mensaje que decía script xyz.py returned exit code 0
. ¿Qué quiere decir esto?
¿Qué significan los códigos de salida en Python? ¿Cuántos hay? ¿Cuáles son importantes?
Estás buscando llamadas a sys.exit()
( exit()
calls sys.exit()
) en el script. El argumento de ese método se devuelve al entorno como código de salida.
Es bastante probable que el script nunca llame al método de salida y que 0 sea el código de salida predeterminado.
De la documentación para sys.exit
:
El argumento opcional arg puede ser un número entero que proporcione el estado de salida (el valor predeterminado es cero) u otro tipo de objeto. Si es un número entero, cero se considera "terminación exitosa" y cualquier valor distinto de cero se considera "terminación anormal" por parte de shells y similares. La mayoría de los sistemas requieren que esté en el rango 0-127 y, de lo contrario, producen resultados indefinidos. Algunos sistemas tienen una convención para asignar significados específicos a códigos de salida específicos, pero generalmente están poco desarrolladas; Los programas Unix generalmente usan 2 para errores de sintaxis de línea de comando y 1 para todos los demás tipos de errores.
Un ejemplo donde se utilizan códigos de salida es en scripts de shell. En Bash puedes verificar la variable especial $?
para el último estado de salida:
me@mini:~$ python -c ""; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(0)"; echo $?
0
me@mini:~$ python -c "import sys; sys.exit(43)"; echo $?
43
Personalmente trato de usar los códigos de salida que encuentro /usr/include/asm-generic/errno.h
(en un sistema Linux), pero no sé si es lo correcto.