在 Python 中以 1 退出

Posted

技术标签:

【中文标题】在 Python 中以 1 退出【英文标题】:Exiting with 1 in Python 【发布时间】:2018-08-31 07:20:12 【问题描述】:

这是我的第一个 Python 程序之一,所以我可能遗漏了一些明显的东西。

在我发布的代码的第一部分中,我想确保用户传递命令行参数。如果没有,我想显示一个错误并返回 1。当我运行没有命令行参数的代码时,程序具有预期的行为,因为错误打印并且程序退出。

但是,当我对此运行检查器时,出现错误:

处理缺少 argv[1]。预期退出代码 1,而不是 0。

关于我可能缺少什么的任何想法?

import sys
import cs50
from cs50 import get_string


def main(argv):
    # Check for command line argument
    if (len(sys.argv) != 2):
        print("Error: Please input numeric key in command line.")
        return 1

if __name__ == "__main__":
    main(sys.argv)

【问题讨论】:

sys.exit(1) 是您所需要的。 是的!做到了!谢谢! @kwicz 仅供参考,包含 if 语句条件的括号是多余的。 Python 不需要它们。 【参考方案1】:

在 blog post 中,Python 的创建者 Guido van Rossum 建议像这样编写 if __name__ == "__main__" 块:

if __name__ == "__main__":
    sys.exit(main())

这样,main() 可以像普通函数一样返回一个值,并将其用作进程的退出代码。

我建议阅读该博客文章的其余部分。它包含有关设置 Python main() 函数样板以更加灵活的有用建议。

【讨论】:

您的意思是包含指向博客文章的链接吗? @user2357112 感谢您的关注。完成!

以上是关于在 Python 中以 1 退出的主要内容,如果未能解决你的问题,请参考以下文章

gcc-4.2 在 Xcode 中以退出代码 1 失败

Command CompileSwift 在 Xcode 10 中以非零退出代码失败 [重复]

为啥构建后步骤 (xcopy) 偶尔会在 TeamCity 构建中以代码 2 退出?

尽管正确打印出所有输出,但程序未在 Java 中以退出代码 0 结束

为啥我的 JScript(Windows 脚本宿主)在未捕获的异常中以 0 退出?

为啥它在控制台进程中以退出代码 0 结束而不是打印 'sen' 变量这样说? [复制]