¿Cómo mantener abierta una ventana de salida de script de Python?
Acabo de empezar con Python. Cuando ejecuto un archivo de script de Python en Windows, aparece la ventana de salida pero desaparece instantáneamente. Necesito que permanezca allí para poder analizar mi resultado. ¿Cómo puedo mantenerlo abierto?
Tienes pocas opciones:
Ejecute el programa desde una terminal ya abierta. Abra un símbolo del sistema y escriba:
python myscript.py
Para que eso funcione, necesita el ejecutable de Python en su ruta. Simplemente verifique cómo editar variables de entorno en Windows y agregue
C:\PYTHON26
(o cualquier directorio en el que haya instalado Python).Cuando finalice el programa, volverá al indicador cmd en lugar de cerrar la ventana.
Agregue código para esperar al final de su secuencia de comandos. Para Python2, agregando...
raw_input()
... al final del script se hace esperar la Enterclave. Ese método es molesto porque tienes que modificar el script y recordar eliminarlo cuando hayas terminado. Especialmente molesto al probar los scripts de otras personas. Para Python3, utilice
input()
.Utilice un editor que se detenga por usted. Algunos editores preparados para Python se pausarán automáticamente después de la ejecución. Otros editores le permiten configurar la línea de comando que utiliza para ejecutar su programa. Me resulta particularmente útil configurarlo como "
python -i myscript.py
" cuando se ejecuta. Eso lo lleva a un shell de Python después del final del programa, con el entorno del programa cargado, para que pueda jugar más con las variables y llamar a funciones y métodos.
cmd /k
es la forma típica de abrir cualquier aplicación de consola (no solo Python) con una ventana de consola que permanecerá después de que se cierre la aplicación. La forma más sencilla que se me ocurre para hacerlo es presionar Win+R, escribir cmd /k
y luego arrastrar y soltar el script que desea en el cuadro de diálogo Ejecutar.
Inicie el script desde una ventana cmd ya abierta o al final del script agregue algo como esto, en Python 2:
raw_input("Press enter to exit;")
O, en Python 3:
input("Press enter to exit;")
Para mantener la ventana abierta en caso de excepción (aún, mientras se imprime la excepción)
Pitón 2
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
print "Press Enter to continue ..."
raw_input()
Para mantener la ventana abierta en cualquier caso:
if __name__ == '__main__':
try:
## your code, typically one function call
except Exception:
import sys
print sys.exc_info()[0]
import traceback
print traceback.format_exc()
finally:
print "Press Enter to continue ..."
raw_input()
Pitón 3
Para Python3 tendrás que usar input()
en lugar deraw_input()
y, por supuesto, adaptar las print
declaraciones.
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
print("Press Enter to continue ...")
input()
Para mantener la ventana abierta en cualquier caso:
if __name__ == '__main__':
try:
## your code, typically one function call
except BaseException:
import sys
print(sys.exc_info()[0])
import traceback
print(traceback.format_exc())
finally:
print("Press Enter to continue ...")
input()