【问题标题】:Programmatically stop execution of python script? [duplicate]以编程方式停止执行 python 脚本? [复制]
【发布时间】:2010-10-07 07:08:04
【问题描述】:

是否可以使用命令在任何行停止执行 python 脚本?

喜欢

some code

quit() # quit at this point

some more code (that's not executed)

【问题讨论】:

    标签: python


    【解决方案1】:

    你想要sys.exit()。来自 Python 的文档:

        >>> import sys
        >>> print sys.exit.__doc__
        exit([status])
    

    通过引发 SystemExit(status) 退出解释器。 如果状态被省略或无,则默认为零(即成功)。 如果状态是数字,它将被用作系统退出状态。 如果它是另一种对象,它将被打印和系统 退出状态将为一(即失败)。

    所以,基本上,你会做这样的事情:

    from sys import exit
    
    # Code!
    
    exit(0) # Successful exit
    

    【讨论】:

    • 看看为什么简单的 exit() 无需导入即可工作:docs.python.org/library/constants.html
    • @gdivos,引用同一页:“它们对交互式解释器外壳很有用,不应该在程序中使用。”
    【解决方案2】:

    exit()quit() 内置函数可以满足您的需求。无需导入 sys。

    或者,您可以引发 SystemExit,但您需要注意不要在任何地方捕获它(只要您在所有 try.. 块中指定异常类型,就不会发生这种情况)。

    【讨论】:

    • Python 库参考明确指出,这些函数只能在交互式解释器中使用,而不能在程序中使用。
    • 在脚本中不起作用。
    • 它至少在 2.7.5 版本中可以执行 python 文件。
    • @alldayremix 我在我的代码中写了quit(),但它不起作用。但我没有说它不应该在程序中使用:docs.python.org/3.7/library/constants.html#quit 你提到的文档在哪里?谢谢
    • @YJZ 它实际上是您链接页面上突出显示的行上方的一行
    【解决方案3】:

    sys.exit() 会做你想做的事。

    import sys
    sys.exit("Error message")
    

    【讨论】:

      【解决方案4】:

      您可以raise SystemExit(0) 而不是麻烦到import sys; sys.exit(0)

      【讨论】:

      • 为什么这不是公认的答案?有什么理由更喜欢import sys; sys.exit(0)
      • 我不知道这是否是首选,但对我来说这是可行的。 sys.exit() 在杀死应用程序之前给出错误。
      • stackoverflow.com/questions/13992662/… - 这真的没什么大不了的。很可能您已经在使用 sys,所以 sys.exit() 恕我直言更干净
      猜你喜欢
      • 1970-01-01
      • 2011-03-23
      • 1970-01-01
      • 2011-05-28
      • 2011-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-18
      相关资源
      最近更新 更多