2012-07-24 17 views
6

Tengo un script de python que he hecho dropable usando una clave de registro, pero parece que no funciona. La ventana cmd.exe simplemente parpadea, ¿puedo de alguna manera mantener la ventana abierta o guardar la salida?Mantenga cmd.exe abierto

EDITAR: el problema fue que le dio a la ruta completa no solo el nombre del archivo.

Respuesta

6

Si desea una solución pura de Python a esto, usted tiene que envolver la secuencia de comandos con un try/except:

import traceback 
try: 
    ... your script ... 
except: 
    traceback.print_exc() 

raw_input("Press Enter to close") # Python 2 
input("Press Enter to close") # Python 3 

De esta manera la ventana permanecerá abierta, incluso cuando el código de tiros una excepción. Todavía se cerrará cuando Python no pueda analizar el script, es decir, cuando tenga un error de sintaxis. Si quieres arreglar eso también, te sugiero un IDE bueno que te permita desarrollarte de una manera más agradable (me vienen a la mente el PyCharm y el PyDev).

+0

Gracias, terminé haciéndolo antes de su publicación, pero gracias de todos modos :) –

+1

Quizás coloque la entrada ('raw_')' debajo de la llamada 'print_exc()' en el mismo nivel. Luego se detendrá solo si hay una excepción. – glglgl

2

insertar una línea al final de la secuencia de comandos:

raw_input("Press Enter to close") # Python 2 

o

input("Press Enter to close") # Python 3 
1

Cuando el guión terminado su ejecución, la ventana se cierra.

Un truco para mantenerlo abierto es tenerlo para pedir al usuario algún tipo de entrada, p. a través de raw_input.


lo que sólo puede añadir

raw_input() 

hasta el final de la secuencia de comandos que esperar a que el usuario pulse Enter .

1

Otra opción posible es crear una GUI básica de TKinter con un área de texto y un botón de cerrar. Luego ejecuta eso con subproceso o equiv. y haga que tome la stdout de su secuencia de comandos python ejecutada con pythonw.exe para que no aparezca el mensaje CMD.

Esto mantiene puramente usando Python de stdlib y también significa que podría utilizar la interfaz gráfica de usuario para configurar opciones o introducir parámetros ...

Es sólo una idea.

1

Haga clic con el botón derecho en la secuencia de comandos y elimine la casilla de verificación Programa-> Cerrar al salir en sus propiedades, o use cmd /k como parte de su línea de llamada.

Piénselo dos veces antes de introducir retrasos artificiales o si necesita presionar la tecla; esto hará que su secuencia de comandos sea inutilizable en su mayoría en cualquier llamada desatendida/de tubería.

Cuestiones relacionadas