Argparse 不识别参数

Argparse not recognizing arguments

我在使用 argparse 时遇到了一些问题。我的目标是让用户 select 只有一个选项(-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

谢谢!

您必须像 python3.6 main.py -iq "index_name_here" 一样传递值(即使用 -iq,而不是 iq)。

就提出相互排斥的论点而言,据我所知,subparsers 是可行的方法,但我不能就如何继续进行提供太多指导。

编辑:

针对您的评论,做了以下工作:

python3.6 main.py iq -iq "index_name_here"

?