Python中退出代码1的含义

5

这是我在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)

6
你需要使用 sys.exit(1) - Stephen Rauch
2
是的!做到了!谢谢! - kwicz
2
@kwicz 只是提醒一下,括号包含在if语句条件中是多余的。Python不需要它们。 - ndmeiri
1个回答

7
在一篇博客文章中,Python 的创始人 Guido van Rossum 建议这样编写 if __name__ == "__main__" 块:
if __name__ == "__main__":
    sys.exit(main())

这样,main()可以像普通函数一样返回一个值,并将其用作进程的退出代码。
我建议阅读博客文章的其余部分。它包含有关设置Python main()函数样板以使其更加灵活的有用建议。

你是不是想在博客文章中包含一个链接? - user2357112
@user2357112 谢谢你发现了这个问题。已经解决了! - ndmeiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接