我是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是必需的
答案 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