【问题标题】:python argparse -h like behaviour and mutually exclusive argumentspython argparse -h 类似行为和互斥参数
【发布时间】:2013-09-18 17:49:34
【问题描述】:

我的脚本通常会接受像 script.py PATH 这样的必需参数,但我也可以这样称呼它 script.py -e EXPRESSION 并省略 PATH 一起。

有没有办法用 argparse 做到这一点?

为了向后兼容,我想添加此功能但不更改现有行为,例如通过使用 script.py --path PATH 而不仅仅是 script.py PATH 传递路径

我希望这不会太难,因为它类似于 -h 的行为。

【问题讨论】:

    标签: python argparse required


    【解决方案1】:

    您可以使用包含可选位置参数的互斥组

    parser = argparse.ArgumentParser(usage='%(prog)s [-h] (PATH | -e EXPRESSION)')
    group = parser.add_mutually_exclusive_group(required=True)
    group.add_argument("PATH", nargs='?', help="Path")
    group.add_argument("-e", "--expression", help="Regular expression")
    
    print parser.parse_args()
    

    默认用法不显示排他性组以及两个常规参数之间,这就是我添加自定义用法的原因。

    【讨论】:

      【解决方案2】:

      您可以使用“默认”选项,这样,即使您没有指定参数,它也会被分配: 示例:

      parser.add_argument("-p", "--path", action=selected_path, default=".",
                      help="Specify the path for execution.")
      parser.add_argument("-e", "--expression", action=expression_value, default=0,
                      help="Specify the expression for execution.")
      

      【讨论】:

      • 问题是我想以相互排斥的方式结合位置和非位置参数。
      猜你喜欢
      • 2020-07-29
      • 1970-01-01
      • 2021-12-20
      • 2011-06-09
      • 2017-01-17
      • 1970-01-01
      • 2011-06-13
      • 2012-12-04
      相关资源
      最近更新 更多