2

我有一个脚本,我想在某些情况下提前退出:

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 ]

我使用 Python 交互式提示符运行此脚本execfile("foo.py"),我希望脚本退出并返回到交互式解释器。我该怎么做呢?如果我使用sys.exit(),Python 解释器将完全退出。

4

4 回答 4

7

在交互式解释器中;catchSystemExit提出sys.exit并忽略它:

try:
    execfile("mymodule.py")
except SystemExit:
    pass
于 2010-04-06T17:56:59.163 回答
3

将您的代码块放在一个方法中并从该方法返回,如下所示:

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()
于 2010-04-06T17:56:12.963 回答
2

对于交互式工作,我对 ipython 有点着迷,但请查看有关shell 嵌入的教程,以获得比这个更强大的解决方案 (这是您最直接的途径)。

于 2010-04-07T17:19:34.757 回答
0

而不是使用 execfile,您应该使脚本可导入(name =='主要保护,分离成函数等),然后从解释器中调用函数。

于 2010-04-06T20:00:44.423 回答