如何为每个选项使用不同数量的参数?python argparse参数不同数量不同
EX)a.py
parser.add_argument('--opt', type=str,choices=['a', 'b', 'c'],help='blah~~~')
- 选择:A /参数:1
EX)
$ python a.py --opt a param
- 选择:c /参数:2
前)
$ python a.py --opt b param1 param2
如何为每个选项使用不同数量的参数?python argparse参数不同数量不同
EX)a.py
parser.add_argument('--opt', type=str,choices=['a', 'b', 'c'],help='blah~~~')
EX)
$ python a.py --opt a param
前)
$ python a.py --opt b param1 param2
您可以为每个A,B和C,也可选参数为您的PARAMS增加更多的参数,一个。通过使用命名参数nargs ='?'您可以指定它们是可选的,并且使用默认值=“某个值”确保它不会出现错误。最后,根据选定的选项a,b或c,您将能够捕捉到您需要的选项。
这里有一个简短的用法例如:
parser.add_argument('x1', type=float, nargs='?', default=0, help='Circ. 1 X-coord')
parser.add_argument('y1', type=float, nargs='?', default=0, help='Circ. 1 Y-coord')
parser.add_argument('r1', type=float, nargs='?', default=70, help='Circ. 1 radius')
parser.add_argument('x2', type=float, nargs='?', default=-6.57, help='Circ. 2 X-coord')
parser.add_argument('y2', type=float, nargs='?', default=7, help='Circ. 2 Y-coord')
parser.add_argument('r2', type=float, nargs='?', default=70, help='Circ. 2 radius')
args = parser.parse_args()
circCoverage(args.x1, args.y1, args.r1, args.x2, args.y2, args.r2)
这里,如果没有选择值,则使用默认的。你可以玩这个来得到你想要的。
干杯
您需要添加sub-commands,ArgumentParser.add_subparsers()
方法会帮助你
检查这个例子
>>> # create the top-level parser
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--foo', action='store_true', help='foo help')
>>> subparsers = parser.add_subparsers(help='sub-command help')
>>>
>>> # create the parser for the "a" command
>>> parser_a = subparsers.add_parser('a', help='a help')
>>> parser_a.add_argument('bar', type=int, help='bar help')
>>>
>>> # create the parser for the "b" command
>>> parser_b = subparsers.add_parser('b', help='b help')
>>> parser_b.add_argument('--baz', choices='XYZ', help='baz help')
>>>
>>> # parse some argument lists
>>> parser.parse_args(['a', '12'])
Namespace(bar=12, foo=False)
>>> parser.parse_args(['--foo', 'b', '--baz', 'Z'])
Namespace(baz='Z', foo=True)
这不是一个直接的答案,但如果你打算写命令行脚本,你应该看看['docopt'](http://docopt.org/)。 –
我看到'--opt'标志(可选参数)的定义,但'-a'或' - a'没有。 – hpaulj
谢谢。我修改了内容。 – lloyd