¿Cómo termino un script?

Resuelto Teifion asked hace 16 años • 14 respuestas

¿Cómo salgo de un script antes de tiempo, como el die()comando en PHP?

Teifion avatar Sep 16 '08 22:09 Teifion
Aceptado
import sys
sys.exit()

detalles de la sysdocumentación del módulo :

sys.exit([arg])

Salir de Python. Esto se implementa generando la SystemExitexcepción, por lo que se respetan las acciones de limpieza especificadas por las cláusulas finalmente de trylas declaraciones y es posible interceptar el intento de salida en un nivel externo.

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. Si se pasa otro tipo de objeto, Ninguno equivale a pasar cero, y cualquier otro objeto se imprime stderry da como resultado un código de salida de 1. En particular, sys.exit("some error message")es una forma rápida de salir de un programa cuando ocurre un error.

Dado que, exit()en última instancia, "sólo" genera una excepción, solo saldrá del proceso cuando se llame desde el hilo principal y la excepción no será interceptada.

Tenga en cuenta que esta es la forma "bonita" de salir. @gliptwistedmatrix a continuación señala que si desea una 'salida completa', puede usar , aunque es probable que sea específico del sistema operativo hasta cierto punto (puede que no admita un código de error enos._exit(*errorcode*) Windows, por ejemplo), y definitivamente es menos amigable ya que no permite que el intérprete realice ninguna limpieza antes de que finalice el proceso. Por otro lado, mata todo el proceso, incluidos todos los subprocesos en ejecución, mientras que sys.exit()(como dice en los documentos) solo sale si se llama desde el subproceso principal, sin ningún otro subproceso en ejecución.

pjz avatar Sep 16 '2008 15:09 pjz

Una forma sencilla de finalizar un script de Python antes de tiempo es utilizar la función incorporada quit(). No es necesario importar ninguna biblioteca y es eficiente y sencillo.

Ejemplo:

#do stuff
if this == that:
  quit()
j.m.g.r avatar Feb 12 '2013 15:02 j.m.g.r