Salida de Python

Al ejecutar un script en Python, puede que no seas consciente de que el código tiene un bucle infinito. Así, cuando ejecutas el programa, éste entra en un bucle infinito. En tal situación tendrás que detener la ejecución del código.

Si el KeyboardInterrupt no funciona, entonces puedes enviar una señal SIGBREAK. En Windows, presione CTRL + Pausa/Interrupción. Esto podría ser manejado por el intérprete y podría no generar una excepción KeyboardInterrupt capturable.

En un entorno Linux o Unix, puedes encontrar el PID (identificador de proceso) del programa que estás ejecutando. A continuación, matar el proceso utilizando su PID. Puede utilizar ps aux | grep python para determinar los procesos de Python que se están ejecutando y luego utilizar el comando kill <pid> para enviar una señal SIGTERM al sistema.

Pero para los usuarios de Windows, manejar las señales de los procesos no es tan fácil. Si estás trabajando en Windows, tienes que terminar el proceso en ejecución usando la función TerminateProcess. La mejor manera de hacerlo es abriendo el Administrador de Tareas. Localiza el proceso python.exe que corresponde a tu script de Python, y haz clic en “Terminar Proceso”. Esto terminará el programa a la fuerza.

Bucle de parada en Python

Estoy usando Python 3.2 e intento salir de él después de que el usuario introduzca que no quiere continuar, ¿hay algún código que salga en una sentencia if dentro de un bucle while? Ya he intentado usar exit(), sys.exit(), sys.quit(), quit(), y raise SystemExit.

Para detener la ejecución de código en Python, primero necesitas importar el objeto sys. Después puedes llamar al método exit() para detener la ejecución del programa. Es la forma más fiable y multiplataforma de detener la ejecución del código. He aquí un ejemplo sencillo.

leer  Ejercicios de python para principiantes pdf

En Python, la sentencia break te da la oportunidad de salir de un bucle cuando se dispara una condición externa. Pondrás la sentencia break dentro del bloque de código bajo tu sentencia de bucle, normalmente después de una sentencia if condicional.

Programa de salida de Python con código de error

Tenga en cuenta que esta es la forma ‘agradable’ de salir. @glyphtwistedmatrix señala que si quieres una “salida dura”, puedes usar os._exit(*código de error*), aunque es probable que sea específico de OS hasta cierto punto (puede que no acepte un código de error en Windows, por ejemplo), y definitivamente es menos amigable ya que no deja que el intérprete haga ninguna limpieza antes de que el proceso muera. Por otro lado, mata todo el proceso, incluyendo todos los hilos en ejecución, mientras que sys.exit() (como dice la documentación) sólo sale si se llama desde el hilo principal, sin otros hilos en ejecución.

Tenga en cuenta que sys.exit(), exit(), quit(), y os._exit(0) matan al intérprete de Python. Por lo tanto, si aparece en un script llamado desde otro script por execfile(), detiene la ejecución de ambos scripts.

Si está seguro de que necesita salir de un proceso inmediatamente, y puede estar dentro de algún manejador de excepciones que atraparía SystemExit, hay otra función – os._exit – que termina inmediatamente en el nivel C y no realiza ninguna de las operaciones normales de desmontaje del intérprete; por ejemplo, los ganchos registrados con el módulo “atexit” no se ejecutan.

Fallo de salida de Python

Sin embargo, la mayoría de los programas se cierran de forma natural cuando se alcanza el final del programa. Python, siendo un lenguaje dinámico por naturaleza, proporciona varios métodos que podemos utilizar fácilmente para detener la ejecución de un programa.

leer  Numero primo python

Usando la función quit() podemos salir fácilmente del shell interactivo de python llamando a la función en cualquier parte del shell interactivo de python como se muestra a continuación. Esto nos permite volver a la interfaz normal de la terminal.

En el ejemplo siguiente hemos inicializado dos variables: a y b y una sentencia if que comprueba si los valores de a son mayores que los de b y sale del programa si es así. En caso contrario el programa imprime un mensaje de que sigue adelante.

También necesitamos importar el módulo os, que nos permite interactuar con el sistema operativo subyacente.    La función sys.exit() acepta un argumento opcional y se considera la forma estándar de salir de los procesos en producción.

Alternativamente, también podemos utilizar la función os._exit() para salir de un proceso. Sin embargo, a diferencia de la función sys.exit() la función os._exit() se utiliza normalmente en los procesos hijos después de la llamada al sistema os.fork().

Por avivcas