¿Cómo mantener abierta la ventana de salida de un 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. Lo necesito para permanecer allí para poder analizar mi salida. ¿Cómo puedo mantenerlo abierto?

Tienes pocas opciones:

  1. Ejecuta el progtwig desde un terminal ya abierto. Abra un símbolo del sistema y escriba:

    python myscript.py 

    Para que eso funcione, necesitas el ejecutable de Python en tu camino. Solo revisa cómo editar las variables de entorno en Windows y agrega C:\PYTHON26 (o cualquier directorio en el que hayas instalado python).

    Cuando finalice el progtwig, volverá al comando cmd en lugar de cerrar la ventana.

  2. Agregue código para esperar al final de su script. Para Python2, agregando …

     raw_input() 

    … al final de la secuencia de comandos se hace esperar a la tecla Intro . Ese método es molesto porque tienes que modificar el script y debes recordar haberlo eliminado cuando hayas terminado. Especialmente molesto al probar los guiones de otras personas. Para Python3, use input() .

  3. Utilice un editor que se detiene por usted. Algunos editores preparados para python se detendrán automáticamente después de la ejecución. Otros editores le permiten configurar la línea de comandos que utiliza para ejecutar su progtwig. Me resulta particularmente útil configurarlo como ” python -i myscript.py ” cuando se ejecuta. Eso te deja en un shell de Python después del final del progtwig, con el entorno del progtwig cargado, por lo que puedes jugar 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 la aplicación se cierre. La forma más fácil en la que puedo pensar es hacerlo presionando Win + R, escriba cmd /k y luego arrastre y suelte el script que desea al cuadro de diálogo Ejecutar.

Inicie el script desde la ventana de 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 su ventana abierta en caso de excepción (aún, mientras imprime la excepción)

Python 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() 

Python 3

Para Python3, tendrá que usar input() en lugar de raw_input() y, por supuesto, adaptar las declaraciones de print .

 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() 

puede combinar las respuestas antes: (para el usuario de Notepad ++)

presiona F5 para ejecutar el script actual y escribe el comando:

 cmd /k python -i "$(FULL_CURRENT_PATH)" 

de esta manera, permanece en el modo interactivo después de ejecutar su script de Python de Notepad ++ y puede jugar con sus variables y así sucesivamente 🙂

Crea un archivo por lotes de Windows con estas 2 líneas:

 python your-program.py pause 

En Python 2 puedes hacerlo con: raw_input ()

 >>print("Hello World!") >>raw_input('Waiting a key...') 

En Python 3 puedes hacerlo con: input ()

 >>print("Hello world!") >>input('Waiting a key...') 

Además, puedes hacerlo con el time.sleep (tiempo).

 >>import time >>print("The program will close in 5 seconds") >>time.sleep(5) 

Usando atexit , puedes pausar el progtwig justo cuando sale. Si un error / excepción es el motivo de la salida, se detendrá después de imprimir el seguimiento de stack.

 import atexit # Python 2 should use `raw_input` instead of `input` atexit.register(input, 'Press Enter to continue...') 

En mi progtwig, puse la llamada a atexit.register en la cláusula de except , para que solo se detenga si algo salió mal.

 if __name__ == "__main__": try: something_that_may_fail() except: # Register the pause. import atexit atexit.register(input, 'Press Enter to continue...') raise # Reraise the exception. 

Tuve un problema similar. Con Notepad ++ solía usar el comando: C:\Python27\python.exe "$(FULL_CURRENT_PATH)" que cerró la ventana de cmd inmediatamente después de que el código terminara.
Ahora estoy usando cmd /kc:\Python27\python.exe "$(FULL_CURRENT_PATH)" que mantiene la ventana de cmd abierta.

En Python 3

 input('Press Enter to Exit...') 

Hará el truco.

Para mantener la ventana abierta, estoy de acuerdo con Anurag y esto es lo que hice para mantener mis ventanas abiertas para pequeños progtwigs de tipo de cálculo.

Esto solo mostraría un cursor sin texto:

 raw_input() 

El siguiente ejemplo le daría un mensaje claro de que el progtwig está terminado y no esperará otra solicitud de entrada dentro del progtwig:

 print('You have reached the end and the "raw_input()" function is keeping the window open') raw_input() 

¡Nota!
(1) En Python 3, no hay raw_input () , solo input () .
(2) Use comillas simples para indicar una cadena; de lo contrario, si escribe dobles alrededor de cualquier cosa, como “raw_input ()”, pensará que es una función, variable, etc., y no texto.

En este siguiente ejemplo, uso comillas dobles y no funcionará porque piensa que hay una ruptura en las comillas entre “la” y “función”, aunque cuando lo lees, tu propia mente puede darle un perfecto sentido:

 print("You have reached the end and the "input()" function is keeping the window open") input() 

Esperemos que esto ayude a otros que podrían estar empezando y aún no se hayan dado cuenta de cómo piensa la computadora todavía. Puede tomar un tiempo. : o)

Si desea ejecutar su script desde un acceso directo del escritorio, haga clic con el botón derecho en el archivo de Python y seleccione Send to|Desktop (create shortcut) . Luego haga clic derecho en el acceso directo y seleccione Propiedades. En la pestaña Acceso directo, seleccione el cuadro de texto Destino: y agregue cmd /k al frente de la ruta y haga clic en Aceptar. El acceso directo ahora debería ejecutar su secuencia de comandos sin cerrarse y no necesita la input('Hit enter to close')

Tenga en cuenta que si tiene más de una versión de python en su máquina, agregue el nombre del ejecutable de python requerido entre cmd / k y la ruta de acceso de esta manera:

 cmd /k python3 "C:\Users\\Documents\your_scipt.py" 

Además de input y raw_input , también puede utilizar un bucle while infinito, como este: while True: pass (Python 2.5 + / 3) o while 1: pass (todas las versiones de Python 2/3). Sin embargo, esto podría usar la potencia de cálculo.

También puede ejecutar el progtwig desde la línea de comandos. Escriba python en la línea de comando (Terminal de Mac OS X) y debería decir Python 3.?.? (Su versión de Python) No muestra su versión de Python, o dice python: command not found , busque valores de PATH cambiantes (valores de entorno, listados arriba) / escriba C:\(Python folder\python.exe . Si eso es exitoso, escriba python o C:\(Python installation)\python.exe y el directorio completo de su progtwig.

Una respuesta muy tardía, pero creé un archivo de Windows Batch llamado pythonbat.bat contiene lo siguiente:

 python.exe %1 @echo off echo. pause 

y luego especificó pythonbat.bat como el controlador predeterminado para los archivos .py .

Ahora, cuando hago doble clic en un archivo .py en el Explorador de archivos, abre una nueva ventana de consola, ejecuta el script de Python y luego se detiene (permanece abierto), hasta que presiono cualquier tecla …

No se requieren cambios a ningún script de Python.

Todavía puedo abrir una ventana de consola y especificar python myscript.py si quiero …

(Acabo de notar que @maurizio ya publicó esta respuesta exacta)

  1. Vaya aquí y descargue e instale Notepad ++
  2. Vaya aquí y descargue e instale Python 2.7 no 3.
  3. Comience, ejecute PowerShell. Introduzca la siguiente. [Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")
  4. Cierre Powershell y vuelva a abrirlo.
  5. Haga un directorio para sus progtwigs. scripts mkdir
  6. Abra ese directorio de scripts cd
  7. En Notepad ++, en un nuevo tipo de archivo: print "hello world"
  8. Guarde el archivo como hello.py
  9. Vuelve a powershell y asegúrate de estar en el directorio correcto escribiendo dir. Deberías ver tu archivo hello.py allí.
  10. En el indicador de Powershell escriba: python hello.py

Un simple truco para mantener la ventana abierta:

 counter = 0 While (True): If (counter == 0): # Code goes here counter += 1 

El contador es para que el código no se repita.

En Windows 10 inserte al principio esto:

 #!/usr/bin/env python # -*- coding: utf-8 -*- 

¡Extraño, pero a mí me funciona! (Junto con la entrada () al final, por supuesto)