Domanda

Ho uno script che voglio uscire presto sotto alcune condizioni:

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 ]

I eseguire questo script utilizzando execfile("foo.py") dal prompt interattivo di Python e vorrei lo script per uscire tornare a interprete interattivo. Come faccio a fare questo? Se uso sys.exit(), l'interprete Python termina completamente.

È stato utile?

Soluzione

Mettere il vostro blocco di codice in un metodo e ritorno da quel metodo, come ad esempio:

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

Inoltre, a meno che non ci sia una buona ragione per l'uso execfile (), questo metodo dovrebbe probabilmente essere messo in un modulo, in cui può essere chiamato da un altro script Python importandolo:

import mymodule
mymodule.do_the_thing()

Altri suggerimenti

Nel interprete interattivo; cattura SystemExit sollevata da sys.exit e ignorarlo:

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

Sono un po 'ossessionato ipython per il lavoro interattivo ma guarda che il tutorial su SHELL incorporamento per una soluzione più robusta rispetto questo (che è il vostro più percorso diretto).

Invece di usare execfile, si dovrebbe fare l'importabile copione ( nome == ' principale Protezione, separati in funzioni, ecc), e quindi chiamare le funzioni da l'interprete.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top