繁体   English   中英

python argparse具有不同数量的参数的不同参数

[英]python argparse different parameters with different number of arguments

如何为每个选项使用不同数量的参数?

例如)a.py

parser.add_argument('--opt', type=str,choices=['a', 'b', 'c'],help='blah~~~')
  1. 选择:一个/参数:1

EX)

$ python a.py --opt a param
  1. 选择:c /参数:2

EX)

$ python a.py --opt b param1 param2

您可以添加更多参数,每个参数分别用于a,b和c,以及参数的可选参数。 通过使用命名参数nargs ='?' 您可以指定它们是可选的,并使用default =“ some value”来确保其不会出错。 最后,基于选定的选项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)

在此,如果未选择任何值,则使用默认值。 您可以玩这个来获得想要的东西。

干杯

您需要添加子命令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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM