Frage

Ich habe ein Skript, das ich verlassen will früh unter einer Bedingung:

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 ]

ich dieses Skript ausführen execfile("foo.py") aus der interaktiven Python Aufforderung, und ich möchte die Skript Ausgang zum interaktiven Interpreter zurück. Wie mache ich das? Wenn ich sys.exit(), die Python-Interpreter Ausfahrten vollständig.

War es hilfreich?

Lösung

Setzen Sie Ihren Code-Block in einem Verfahren und eine Rückkehr von dieser Methode, wie so:

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

Auch, es sei denn es einen guten Grund zu verwenden execfile ist (), ist diese Methode wahrscheinlich in einem Modul gelegt werden sollte, wo es von einem anderen Python-Skript aufgerufen werden kann es durch den Import von:

import mymodule
mymodule.do_the_thing()

Andere Tipps

Im interaktiven Interpreter; Fang SystemExit von sys.exit angehoben und ignorieren:

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

Ich bin ein wenig mit ipython besessen für die interaktive Arbeit, aber die Tutorial Besuche auf diese (was Ihr ist direkteste Weg).

Statt execfile zu verwenden, sollten Sie das Skript importierbaren machen ( Namen == ' Haupt Schutz, in Funktionen getrennt, etc.), und rufen Sie dann die Funktionen aus der Dolmetscher.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top