我希望能够解析多个参数,每个参数都是互斥组。
我试过了:
import argparse
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers()
# week
week_parser = subparsers.add_parser('week', help = 'input type for week')
week_group = week_parser.add_mutually_exclusive_group(required = True)
week_group.add_argument('--list', '-l', help = '"1 2 3 4"')
week_group.add_argument('--single', '-s', help = '25')
week_group.add_argument('--range', '-r', help = '1:10')
# year
year_parser = subparsers.add_parser('year', help = 'input type for year')
year_group = year_parser.add_mutually_exclusive_group(required = True)
year_group.add_argument('--list', '-l', help = '"2016 2017"')
year_group.add_argument('--single', '-s', help = '2017')
year_group.add_argument('--range', '-r', help = '2015:2017')
args = vars(parser.parse_args())
我想做点什么:
python program.py week -s 25 year -l "2016 2017"
谢谢。
答案 0 :(得分:0)
子命令方法不起作用,因为解析器期望在给定命令行上只找到一个子命令。毫无疑问,你可以修改这种行为,但我怀疑它会涉及不成比例的工作量。
您可能需要满足以下其中一种选择:(1)消除您的论点名称的歧义:
python program.py --week-single 25 --year-list "2016 2017"
或(2)定义--week
和--year
接受字符串并自行解析和验证:
python program.py --week 25 --year "2016 2017"