关于退出:Python:退出脚本

Python: Exiting script

本问题已经有最佳答案,请猛点这里访问。

我有一个小的python脚本,专门为这个问题编写的。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python3

import sys

def testfunc(test):
  if test == 1:
    print("test is 1")
  else:
    print("test is not 1")
    sys.exit(0)

try:
  testfunc(2)
except:
  print("something went wrong")

print("if test is not 1 it should not print this")

我所期望的是,当test=2时,脚本应该退出。相反,我得到的是这个;

1
2
3
test is not 1
something went wrong
if test is not 1 it should not print this

我不熟悉Python,但不熟悉脚本/编码。我到处搜索,每个答案都是"use sys.exit()"

当sys.exit()包含在try/except中时,它似乎具有意外的行为。如果我删除了try,它将按预期运行

这是正常行为吗?如果是这样,是否有一种硬退出脚本的方法,当test=2时,该脚本将继续执行到异常块中?

注意:这是一个示例代码,它是我打算在另一个脚本中使用的逻辑的简化版本。之所以存在try/except,是因为将使用变量调用testfunc(),如果提供的函数名无效,我希望捕获异常

提前谢谢

编辑:我还尝试了quit()、exit()、os.exit()和raise systemeexit


这里,sys.exit(0)提出了SystemExit例外。

因为您将调用代码放在Try-Except块中,所以它是按预期捕获的。如果要传播异常,请调用代码状态为:

1
2
3
4
5
6
7
8
9
try:
  testfunc(2)

except SystemExit as exc:
  sys.exit(exc.code) # reperform an exit with the status code
except:
  print("something went wrong")

print("if test is not 1 it should not print this")