我在使用argparse时遇到了一些麻烦。我的目标是让用户选择一个且只有一个选项(-a,-b,-c等),然后选择该选项的参数。我正在使用子解析器执行此操作:
parser_iq = subparsers.add_parser('iq', help='iq help')
parser_iq.add_argument("-iq", "--index_query", nargs="+", action=required_length(1,6),type=organize_args, help="Choose an index to query for. Start-date, end-date, "\
"csv, json, stdout are all optional")
这只是我计划拥有的次级解析器之一。
问题:在命令行中运行时
python3.6 main.py iq "index_name_here"
我收到一个错误,指出“ index_name_here”无法识别。我正在这样解析:
args = parser.parse_args()
我发现了一些类似于我的问题,但它们是将sys.argv传递到parse_args()中,这是他们的问题。
如何使argparse识别传递的参数?另外,有没有办法一次只传递一个选项?例如:
正确:
main.py option1 arg1 arg2
错误:
main.py option1 option2 arg1 arg2
谢谢!
答案 0 :(得分:2)
您必须传递类似python3.6 main.py -iq "index_name_here"
的值(即,使用-iq
,而不是iq
)。
就相互排斥的论点而言,从我的理解来看,次级解析器是解决之道,但我不能就如何进行分解提供指导。
编辑:
针对您的评论,请执行以下操作:
python3.6 main.py iq -iq "index_name_here"
?