我有一个脚本,我希望在某些条件下提前退出:
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解释器将完全退出。
答案 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。口译员。