Pregunta

Tengo un guión que quiero salida temprana bajo alguna condición:

if not "id" in dir():
     print "id not set, cannot continue"
     # exit here!
# otherwise continue with the rest of the script...
print "alright..."
[ more code ]

ejecutar esta secuencia de comandos con execfile("foo.py") del Python interactiva pronta y me gustaría que la secuencia de comandos para salir de nuevo a ir intérprete interactivo. ¿Cómo hago esto? Si uso sys.exit(), el intérprete de Python salidas completamente.

¿Fue útil?

Solución

Ponga su bloque de código en un método y volver de ese método, como por ejemplo:

def do_the_thing():
    if not "id" in dir():
         print "id not set, cannot continue"
         return
         # exit here!
    # otherwise continue with the rest of the script...
    print "alright..."
    # [ more code ]

# Call the method
do_the_thing()

Además, a menos que haya una buena razón para el uso execfile (), este método debe probablemente ser puesto en un módulo, donde se puede llamar desde otro script Python mediante su importación:

import mymodule
mymodule.do_the_thing()

Otros consejos

En el intérprete interactivo; SystemExit retén levantado por sys.exit e ignorarlo:

try:
    execfile("mymodule.py")
except SystemExit:
    pass

Estoy un poco obsesionada con ipython para el trabajo interactivo, pero echa un vistazo a la clase particular en Shell incrustando para una solución más robusta que éste (que es su la ruta más directa).

En lugar de utilizar execfile, usted debe hacer el guión importables ( nombre == ' principal protección, separados en las funciones, etc.), y luego llamar a las funciones de el interprete.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top