【问题标题】:argparse: Conditional add_argumentargparse:有条件的 add_argument
【发布时间】:2015-02-10 17:34:41
【问题描述】:

我刚接触 Python,我正在尝试 argparse。如果第一个参数等于某个值,我想添加一个参数。

import argparse

class ArgsParser :
    def __init__(self):
        parser = argparse.ArgumentParser()
        parser.add_argument('command')
        args = parser.parse_args()
        if args.command == 'a' :
            parser.add_argument('-b', required=True)
            args = parser.parse_args()
            self.b = args.b

def main():
    parser = ArgsParser();
    print parser.b

if __name__ == '__main__':
    main()

当我使用

运行脚本时

prog.py a -b="abc"

报错

prog.py:错误:无法识别的参数:-b=abc

但如果我使用

运行脚本

prog.py 一个

结果是

prog.py: 错误:参数 -b 是必需的

【问题讨论】:

标签: python argparse


【解决方案1】:

我认为您可以使用子解析器来做到这一点:

>>> import argparse
>>> parse = argparse.ArgumentParser()
>>> subparsers = parse.add_subparsers()
>>> parse_a = subparsers.add_parser('a')
>>> parse_a.add_argument('-b', required=True)
_StoreAction(option_strings=['-b'], dest='b', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None)
>>> parse.parse_args(['a'])
usage:  a [-h] -b B
 a: error: argument -b is required

【讨论】:

  • 谢谢!这正是我所需要的。 :)
猜你喜欢
  • 2015-11-22
  • 1970-01-01
  • 2013-12-08
  • 2013-08-04
  • 1970-01-01
  • 2020-11-05
  • 2013-09-13
  • 2011-05-25
  • 2014-10-26
相关资源
最近更新 更多