argparse:有条件的add_argument

时间:2014-12-12 03:23:48

标签: python argparse

我是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 a

结果将是

  

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

1 个答案:

答案 0 :(得分:1)

我认为你可以用subparsers做到这一点:

>>> 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