Acabo de comenzar 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 salida. ¿Cómo puedo mantenerlo abierto?
Acabo de comenzar 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 salida. ¿Cómo puedo mantenerlo abierto?
Respuestas:
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, necesitas el ejecutable de Python en tu camino. Simplemente verifique cómo editar las variables de entorno en Windows y agregue C:\PYTHON26(o el directorio en el que instaló Python).
Cuando finaliza el programa, lo regresará al indicador de 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 hace que espere la Enterclave. Ese método es molesto porque tiene que modificar el script y debe recordar eliminarlo cuando haya terminado. Especialmente molesto al probar los guiones de otras personas. Para Python3, use input().
Use un editor que haga una pausa 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 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, por lo que puede seguir jugando con las variables y las funciones y métodos de llamada.
cmd /kes 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 que puedo pensar en hacer eso es presionar Win + R, escribir cmd /ky luego arrastrar y soltar el script que desea en el cuadro de diálogo Ejecutar.
cmd /kes solo para Windows. No puedo ayudar con una alternativa para Mac, lo siento.
Inicie el script desde la 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 su ventana abierta en caso de excepción (aún, mientras imprime la excepción)
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()
Para Python3, tendrá que usar input()en lugar deraw_input() y, por supuesto, adaptar las printdeclaraciones.
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 Notepad ++)
presione F5 para ejecutar el script actual y escriba el comando:
cmd /k python -i "$(FULL_CURRENT_PATH)"
de esta manera, permanece en modo interactivo después de ejecutar su script de Python Notepad ++ y puede jugar con sus variables, etc. :)
Cree un archivo por lotes de Windows con estas 2 líneas:
python your-program.py
pause
import os os.system("pause")al final del .pyarchivo
raw_inputo otro tipo de basura son simplemente erróneas. Escriba su comando en la línea de comando como Python espera que lo haga, o use el lenguaje por lotes que se ha proporcionado con MS-DOS para este propósito exactamente desde agosto de 1981 .
python %*úselo y configúrelo como uno de los programas "abrir con" para que pueda hacer clic derecho en un archivo .py para abrir una ventana de pausa o también lo coloque en mi carpeta Anaconda3 (en RUTA) como py_pause.bat, así que ahora Puedo correr py_pause my-prog.py all my argsdesde la línea cmd
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 (time)
>>import time
>>print("The program will close in 5 seconds")
>>time.sleep(5)
Utilizando atexit, puede pausar el programa justo cuando sale. Si un error / excepción es el motivo de la salida, se detendrá después de imprimir el stacktrace.
import atexit
# Python 2 should use `raw_input` instead of `input`
atexit.register(input, 'Press Enter to continue...')
En mi programa, puse la llamada atexit.registeren la exceptcláusula, de modo que solo se pausará 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 cerraba la ventana de cmd inmediatamente después de que terminaba el código.
Ahora estoy usando lo cmd /k c:\Python27\python.exe "$(FULL_CURRENT_PATH)"que mantiene abierta la ventana cmd.
Para mantener la ventana abierta, estoy de acuerdo con Anurag y esto es lo que hice para mantener mis ventanas abiertas para pequeños programas 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 programa ha terminado y no espera otra solicitud de entrada dentro del programa:
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 el siguiente ejemplo, uso comillas dobles y no funcionará porque cree que hay una ruptura en las comillas entre "la" y "función", aunque cuando lo lees, tu propia mente puede entenderlo perfectamente:
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 comenzando y aún no han descubierto cómo piensa la computadora todavía. Puede tomar un tiempo : o)
Si desea ejecutar su script desde un acceso directo de escritorio, haga clic derecho en su 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 delante de la ruta y haga clic en Aceptar. El acceso directo ahora debe ejecutar su script sin cerrar y no necesita elinput('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 scipt de esta manera:
cmd /k python3 "C:\Users\<yourname>\Documents\your_scipt.py"
Además de inputy raw_input, también puede usar un whilebucle infinito , como este:
while True: pass(Python 2.5 + / 3) owhile 1: pass (todas las versiones de Python 2/3). Sin embargo, esto podría usar potencia informática.
También puede ejecutar el programa desde la línea de comandos. Escriba pythonen la línea de comando (Mac OS X Terminal) 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 cambiar los valores de RUTA (valores ambientales, enumerados anteriormente) / tipo C:\(Python folder\python.exe. Si eso es exitoso, escriba pythono C:\(Python installation)\python.exey el directorio completo de su programa.
Una respuesta muy tardía, pero creé un archivo Batch de Windows llamado que pythonbat.batcontiene lo siguiente:
python.exe %1
@echo off
echo.
pause
y luego se especifica pythonbat.batcomo el controlador predeterminado para los .pyarchivos.
Ahora, cuando hago doble clic en un .pyarchivo en el Explorador de archivos, se abre una nueva ventana de consola, ejecuta el script Python y luego se detiene (permanece abierto), hasta que presiono cualquier tecla ...
No se requieren cambios en ningún script de Python.
Todavía puedo abrir una ventana de consola y especificar python myscript.pysi quiero ...
(Acabo de notar que @maurizio ya publicó esta respuesta exacta)
Encontré que la solución en mi entorno py3 en win10 es simplemente ejecutar cmd o powershell como Administrador, y la salida se mantendría en la misma ventana de consola, cualquier otro tipo de comando python ejecutado por el usuario haría que python abriera una nueva ventana de consola.
Solo puedes escribir
input()
al final de tu código
por lo tanto, cuando ejecute su script, esperará a que ingrese algo
{ENTER for example}
Puede abrir PowerShell y escribir "python". Después de importar Python, puede copiar y pegar el código fuente de su editor de texto favorito para ejecutar el código.
La ventana no se cierra.
[Environment]::SetEnvironmentVariable("Path", "$env:Path;C:\Python27", "User")print "hello world"python hello.pyLa forma más simple:
import time
#Your code here
time.sleep(60)
#end of code (and console shut down)
esto dejará el código activo durante 1 minuto y luego ciérrelo.
En Windows 10, inserte al principio esto:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
¡Extraño, pero funciona para mí! (Junto con input () al final, por supuesto)