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

代码仍然在“之后执行”;“退出”;或;退出“;,Python,Spyder,python,exit,spyder,Python,Exit,Spyder,在上面的代码示例中,代码仍然执行write-In-file命令,即使它是在退出之后执行的 当我使用exit时,同样的行为也会发生 我正在使用Spyder 3.6 此外,每次使用exit或quit时,内核都会重新启动 有什么帮助吗?一种方法是使用sys.exit()代替quit() 但是,正如@AranFey在注释中指出的,如果代码试图执行未定义变量read的最后一部分,则会抛出错误。一种方法是使用sys.exit()代替quit() 但是,正如@AranFey在注释中指出的,如果代码试图执行未定

在上面的代码示例中,代码仍然执行write-In-file命令,即使它是在退出之后执行的

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

我正在使用Spyder 3.6

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


有什么帮助吗?

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


但是,正如@AranFey在注释中指出的,如果代码试图执行未定义变量
read
的最后一部分,则会抛出错误。

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


但是,正如@AranFey在注释中指出的,如果代码试图执行未定义变量
read
的最后一部分,则会抛出错误。

您可以使用SystemExit:

import sys

...   # code that executes

sys.exit()

...   # this code won't execute

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

您可以使用SystemExit:

import sys

...   # code that executes

sys.exit()

...   # this code won't execute
也会引发此错误,但这不需要导入
sys

(此处为Spyder maintainer)。您的问题包含以下注释:

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

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

注意:Jupyter笔记本中也会出现同样的情况。

(此处为Spyder维护人员)您的问题包含以下评论:

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

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


注意:Jupyter笔记本中也会发生同样的情况。

代码无法将任何内容写入文件,因为它应该抛出
NameError:name“read”未定义
。我不知道你在执行什么代码,但这不是你发布的代码。在spyder中,可能有一个剩余的
read
变量已经从以前的运行@Aran Fey中定义了-OP应该重新启动内核并使用干净的内核运行程序。@ReblochonMasque OP说内核每次都会重新启动。有点不对劲。是的,我在评论后看到了。。。有些东西不符合逻辑。我在帖子中修正了变量。Ofc的名字是错的。问题在于:使用“quit()”和“exit()”不会阻止代码写入文件!这是我没有料到的行为!代码不可能将任何内容写入文件,因为它应该抛出
name错误:未定义名称“read”
。我不知道你在执行什么代码,但这不是你发布的代码。在spyder中,可能有一个剩余的
read
变量已经从以前的运行@Aran Fey中定义了-OP应该重新启动内核并使用干净的内核运行程序。@ReblochonMasque OP说内核每次都会重新启动。有点不对劲。是的,我在评论后看到了。。。有些东西不符合逻辑。我在帖子中修正了变量。Ofc的名字是错的。问题在于:使用“quit()”和“exit()”不会阻止代码写入文件!这是我没有料到的行为!“提高”确实有效。然而,问题是为什么quit()和exit()都会导致“重新连接到内核”和将内容写入文件的代码。“raise”确实有效。然而,问题是为什么quit()和exit()都会导致“重新连接到内核”,并导致代码写入文件。Sys.exit确实有效。然而,问题是为什么quit()和exit()都会导致“重新连接到内核”和代码写入文件。可能是spyder的小故障?你检查过他们的邮件列表,或者他们的问题吗?如果你觉得我的答案对你有帮助,你可以考虑,SysExchange确实有效。然而,问题是为什么quit()和exit()都会导致“重新连接到内核”和代码写入文件。可能是spyder的小故障?你检查过他们的邮件列表,或者他们的问题吗?如果你觉得我的答案对你有帮助,你可以考虑,
# Code that will run
raise SystemExit
# Code that will not run