停止python脚本而不杀死python进程

San*_*era 3 python python-2.7

我想知道是否有一种方法以编程方式停止python脚本执行而不像我们使用此代码一样杀死进程:

import sys
sys.exit()
Run Code Online (Sandbox Code Playgroud)

这将是相当于Ctrl + c的代码

Hug*_*ell 6

定义自己的例外,

class HaltException(Exception): pass
Run Code Online (Sandbox Code Playgroud)

并将脚本包装在中

try:
    # script goes here

    # when you want to stop,
    raise HaltException("Somebody stop me!")

except HaltException as h:
    print(h)
    # now what?
Run Code Online (Sandbox Code Playgroud)


use*_*ser 5

我在开发 Sublime Text 包时遇到了这个问题。我试图停止 Sublime Text Python 包,以便在重新加载包时测试某些内容。

如果我调用sys.exit(),我会终止 Sublime Text python 解释器并需要重新启动 Sublime Text。但经过搜索,我发现解决方案非常简单,我只需要调用raise ValueError(), 而不是sys.exit()

import sys
print(sys.path)

sys.exit()
Run Code Online (Sandbox Code Playgroud)

-->

import sys
print(sys.path)

raise ValueError()
Run Code Online (Sandbox Code Playgroud)

这将在运行后立即停止 python 脚本的执行print(sys.path)。尽管它会打印一个大的堆栈跟踪。sys.tracebacklimit = 1但如果您在 之前添加指令raise ValueError(),则会将堆栈跟踪调用减少到一行:

import sys
print(sys.path)

raise ValueError()
Run Code Online (Sandbox Code Playgroud)

-->

import sys
print(sys.path)

sys.tracebacklimit = 1
raise ValueError()
Run Code Online (Sandbox Code Playgroud)

相关问题:

  1. 停止运行 python 脚本而不终止解释器
  2. 在 Python 中手动引发(抛出)异常