0

我在使用 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

谢谢!

4

1 回答 1

2

您必须传递类似的值python3.6 main.py -iq "index_name_here"(即 use -iq, not iq)。

据我所知,就提出相互排斥的论点而言,子解析器是要走的路,但我不能就如何继续进行指导提供太多指导。

编辑:

作为对您的评论的回应,请执行以下操作:

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

?

于 2019-02-20T18:46:06.397 回答