Вопрос

У меня есть сценарий, который я хочу выйти в начале при некоторых условиях:

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 ]

Я запускаю этот сценарий, используя execfile("foo.py") Из интерактивного подсказки Python и я хотел бы, чтобы скрипт выйти, возвращаясь к интерактивному интерпретатору. Как мне это сделать? Если я использую sys.exit(), Переводчик Python полностью выходит.

Это было полезно?

Решение

Поместите свой код код в метод и вернитесь от этого метода, как таковые:

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

Кроме того, если нет хорошей причины использовать Execfile (), этот метод, вероятно, должен быть введен в модуль, где его можно назвать от другого сценария Python, импортируя его:

import mymodule
mymodule.do_the_thing()

Другие советы

В интерактивном переводчике; ловить SystemExit был воспитан sys.exit и игнорировать это:

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

Я немного одержим iPython для интерактивной работы, но проверяйте учебник на встраивание оболочки для более надежного решения, чем Вот этот (Какой ваш самый прямой маршрут).

Вместо использования execfile вы должны сделать скрипт импортируемым (имя=='основной Защита, отделенная в функции и т. Д.), А затем вызвать функции от переводчика.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top