【问题标题】:Checking the number of command line arguments in python检查python中命令行参数的数量
【发布时间】:2016-05-31 05:33:37
【问题描述】:

我是 python 新手。还是弄湿了我的脚。我正在尝试做这样的事情:

import sys

if ((len(sys.argv) < 3 or < len(sys.argv > 3)):
    print """\
This script will compare two files for something
and print out matches

Usage:  theScript firstfile secondfile
"""
    return

我想在脚本的开头执行此操作以检查正确数量的参数。问题是“返回”在这里不起作用。我想我可以做一些大的 if then 声明,但希望不必这样做。不知道有没有更简单的方法。有什么想法吗?

【问题讨论】:

  • 你试过sys.exit(0)
  • 我假设您正在包装“if _name_ == '_main_': ...”,对吗?否则你一定会过得很糟糕。退出是好的。或者只有在满足良好条件时才做事......
  • @UglyCode:我认为他不应该返回表示成功的退出状态。显然他的脚本使用不正确,所以它应该返回一个非零退出状态。
  • @zondo 是的,你是对的。
  • 不是两个&lt;比较,为什么不直接做len(sys.argv) != 3

标签: python command-line-arguments


【解决方案1】:

使用sys.exit() 退出脚本。

import sys

if len(sys.argv) != 3:
    print """\
This script will compare two files for something
and print out matches

Usage:  theScript firstfile secondfile
"""
    sys.exit(0)

【讨论】:

  • 程序因出错而退出;你可能应该使用sys.exit(1)
  • 这是一种哲学观点,恕我直言。输入错误数量的参数并不代表代码失败或系统崩溃。但是如果你想返回一个错误代码1,欢迎你。 :)
  • 所有,谢谢。你们都很棒。将尝试“sys.exit(1)”。我不确定“如果 __name__ == '__main__' ....”是什么意思? __name__ 是脚本的名称吗?谢谢。
  • @mdmenard: __name__ 在文件作为程序执行时是'__main__',但如果是导入的文件名。如果您将所有主要执行代码放在 if 块中,则另一个文件可以在不运行整个代码的情况下导入您的文件。
  • 吹毛求疵:if子句错误(第二部分的第二个括号错误。修正:if len(sys.argv) &lt; 3 or len(sys.argv) &gt; 3:
【解决方案2】:

sys 有一个名为exit 的函数:

sys.exit(1)

可能是你想要的。使用1 告诉调用你的程序的程序有一个错误。您可能应该考虑写信给sys.stderr 错误的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-03
    • 2019-01-25
    • 1970-01-01
    • 2017-03-10
    • 2014-02-16
    • 1970-01-01
    • 2014-09-21
    • 1970-01-01
    相关资源
    最近更新 更多