Argparse无法识别参数

时间:2019-02-20 18:36:31

标签: python command-line arguments argparse subparsers

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

就相互排斥的论点而言,从我的理解来看,次级解析器是解决之道,但我不能就如何进行分解提供指导。

编辑:

针对您的评论,请执行以下操作:

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