Salida a la línea de comandos en Python
-
24-09-2019 - |
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.
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.