【发布时间】:2016-08-18 08:01:21
【问题描述】:
您好,我正在尝试使用几个只接受特定长参数的子解析器来配置 argparse。下面是代码
import argparse
parser = argparse.ArgumentParser(prog='program', description='Prog Description')
subparsers = parser.add_subparsers(help='choices')
parser.add_argument('--choice', '-c', choices=['a', 'apple', 'b', 'banana', 'l', 'lemmon', 'p', 'papaya'], type=str, help='Menu Choices', required=True)
a_parser = subparsers.add_parser("a")
b_parser = subparsers.add_parser("b")
l_parser = subparsers.add_parser("l")
p_parser = subparsers.add_parser("p")
a_parser.add_argument("--peel")
b_parser.add_argument("--peel")
l_parser.add_argument("--lamount")
p_parser.add_argument("--pamount",required=True,type=str)
但我在以下几点上失败了。
- 子解析器应该接受短格式和长格式。前任。
prog -c a和prog -c apple合法且相同 -
除了
--pamount之外,不需要子解析器的参数。但是代码似乎在期待它们,因为我在运行有效模式python prog -c a时遇到以下错误@用法:程序 [-h] --choice {a,apple,b,banana,l,lemmon,p,papaya} {a,p,b,l} ... 程序:错误:参数太少
如果有人可以为我提供一些解决这些问题的指导方针,我很高兴。谢谢!
【问题讨论】: