¿Cómo aborto la ejecución de un script de Python? [duplicar]
Pregunta
Posible duplicado:
Cómo finalizar un script de Python
Tengo una secuencia de comandos de Python simple que quiero dejar de ejecutar si se cumple una condición.
Por ejemplo:
done = True
if done:
# quit/stop/exit
else:
# do other stuff
Básicamente, estoy buscando algo que se comporte de manera equivalente a la palabra clave 'return' en el cuerpo de una función que permite que el flujo del código salga de la función y no ejecute el código restante.
Solución
Para salir de un script que puedes usar,
import sys
sys.exit()
También puede proporcionar un valor de estado de salida, generalmente un entero.
import sys
sys.exit(0)
Sale con cero, lo que generalmente se interpreta como éxito. Los códigos que no son cero generalmente se tratan como errores. El valor predeterminado es salir con cero.
import sys
sys.exit("aa! errors!")
Imprime " aa! errores! " y sale con un código de estado de 1.
También hay una función _exit () en el módulo os. La función sys.exit () genera una excepción de SystemExit para salir del programa, por lo que puede ejecutar sentencias y código de limpieza. La versión os._exit () no hace esto. Simplemente finaliza el programa sin realizar ningún tipo de limpieza o lavado de búferes de salida, por lo que normalmente no debe utilizarse.
Los documentos de Python indican que os._exit () es la forma normal de finalizar un proceso secundario creado con una llamada a os.fork (), por lo que tiene un uso en ciertas circunstancias.
Otros consejos
import sys
sys.exit()
Podría poner el cuerpo de su script en una función y luego podría regresar de esa función.
def main():
done = True
if done:
return
# quit/stop/exit
else:
# do other stuff
if __name__ == "__main__":
#Run as main program
main()
Puedes usar:
import sys
sys.exit(...)
o:
raise SystemExit(...)
El parámetro opcional puede ser un código de salida o un mensaje de error. Ambos métodos son idénticos. Solía ??preferir sys.exit, pero últimamente he cambiado a aumentar SystemExit, porque parece sobresalir mejor entre el resto del código (debido a la palabra clave raise ).
exit () debería hacer el truco
exit () debería hacerlo.
Probar
sys.exit("message")
Es como el perl
die("message")
si esto es lo que buscas. Termina la ejecución del script incluso cuando se llama desde un módulo / def / function importado
Si todo el programa debe dejar de usar sys.exit (), de lo contrario, solo usa una declaración vacía.