在Python中退出到命令行

时间:2010-04-06 17:51:30

标签: python command-line scripting exit execfile

我有一个脚本,我希望在某些条件下提前退出:

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 个答案:

答案 0 :(得分:7)

在互动口译中;抓住SystemExit提出的sys.exit并忽略它:

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

答案 1 :(得分: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()

答案 2 :(得分:2)

我对ipython的互动工作有点痴迷,但请查看shell embedding上的教程,找出比this one更强大的解决方案(这是您最直接的路线)。

答案 3 :(得分:0)

您应该使脚本可导入(名称 =='保护,分隔成函数等),然后调用以下函数,而不是使用execfile。口译员。