【问题标题】:How to handle missing arguments in argparse?如何处理 argparse 中缺少的参数?
【发布时间】:2015-04-09 10:52:49
【问题描述】:

我需要做以下事情:

  1. if 脚本变量 test == False 没有参数
  2. elif 有参数 -t--test 变量 test == True
  3. else 还有另一个参数将它们作为字符串传递给第三个代码

现在出现错误:

# ./cli something
usage: cli [-t]
cli: error: unrecognized arguments: something

我的前两步代码:

import argparse
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-t', '--test', action="store_true")
args = parser.parse_args()
if args.test is True:
    intro = None

【问题讨论】:

  • 永远不要用is代替==来测试相等性:不要说if args.test is True:你可以说if args.test
  • -t 在以下情况下应该属于什么:cli -t first secondfirstsecond?
  • if 条件不清楚。向我们展示几个预期的使用案例,以及您希望 args 命名空间的外观。
  • @smci。对于单例,始终使用 is,例如 None。不过同意你的第二个说法。

标签: python python-2.7 argparse default-arguments


【解决方案1】:

在 argparse 中,您需要将其作为单独的参数,例如:

import argparse
parser = argparse.ArgumentParser(add_help=False)
parser.add_argument('-t', '--test', action="store_true")
parser.add_argument('params', nargs='+')
args = parser.parse_args()
if args.test is True:
    intro = None
elif args.params:
    pass  # process the params here
else:
    pass  # no params whatsoever

【讨论】:

    猜你喜欢
    • 2023-03-26
    • 2011-02-02
    • 2017-11-26
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 2018-02-19
    • 2016-10-11
    • 2017-01-14
    相关资源
    最近更新 更多