在“退出”或“退出”,Python,Spyder之后,代码仍然执行

时间:2018-08-11 08:36:26

标签: python exit spyder

from os.path import join

string=" Congratulations, you are about to embark upon one of life’s "

path=r"C:\Users\Nord.Kind\Desktop"
file="test.txt"

quit() 

# This should not execute, but it does!!
with open(join(path,file),"w")as wfile:
    wfile.write(string)

wfile.close()

在上面的代码示例中,即使退出后,该代码仍会执行写文件命令。

当我使用exit时,也会发生同样的行为。

我正在使用Spyder 3.6

每次我使用exit或quit时,内核都会重新启动。

有帮助吗?

3 个答案:

答案 0 :(得分:1)

您可以使用SystemExit:

# Code that will run
raise SystemExit
# Code that will not run

sys.exit()也会引发此错误,但这不需要导入sys

答案 1 :(得分:1)

(此处为 Spyder维护者),您的问题包含此评论:

  

每次我使用exit或quit时,内核都会重新启动。

这就是我们用作后端执行用户代码的IPython内核的行为。这些命令会杀死内核,并迫使内核重新启动以保持其关联的控制台处于活动状态。恐怕您无能为力。

注意:在Jupyter笔记本中也是如此。

答案 2 :(得分:0)

一种方法是使用sys.exit()代替quit()

import sys

...   # code that executes

sys.exit()

...   # this code won't execute

但是,正如@AranFey在注释中指出的那样,如果代码尝试执行未定义变量read的最后一个参数,则代码将引发错误。