【发布时间】:2021-09-21 16:40:36
【问题描述】:
我在 mainParser.py 中有一个解析器
这个解析器非常基础,只有 -h 和 -v 选项。
不过,它也有subparsers。
每个子解析器都在不同的文件sub_1.py, sub_2.py etc`中。
所有(子)解析器函数都在parserFunctions.py中
这是层次结构:
Parsers /
ParserPackage /
- __init__.py
- mainParser.py
- sub_1.py
- sub_2.py
- parserFunctions.py
mainParser.py:
import argparse
from Parsers.ParserPackage.parserFunctions import mainParserFunc
mainParser = argparse.ArgumentParser(
prog="XXX",
description="YYY",
add_help=False
)
SUBPARSER = mainParser.add_subparsers(title="ZZZ")
mainParser.add_argument(...)
.
.
.
mainParser.set_defaults(func=mainParserFunc)
sub_1.py
from Parsers.ParserPackage.parserFunctions import sub_1_parserFunc
from Parsers.ParserPackage.mainParser import SUBPARSER
sub_1_parser = SUBPARSER.add_parser(name="AAA")
sub_1_parser.add_argument(...)
.
.
.
sub_1_parser.set_defaults(func=sub_1_parser_parserFunc)
sub_2.py
from Parsers.ParserPackage.parserFunctions import sub_2_parserFunc
from Parsers.ParserPackage.mainParser import SUBPARSER
sub_2_parser = SUBPARSER.add_parser(name="BBB")
sub_2_parser.add_argument(...)
.
.
.
sub_2_parser.set_defaults(func=sub_2_parser_parserFunc)
问题:
当我打电话给mainParser.parse_args(myArgs.split()) 时:
它说'无效的选择'AAA'/'BBB'(从 中选择)。
为什么?
【问题讨论】:
-
显示示例
myArgs和完整错误。 '-h' 帮助也可能有帮助。 -
@hpaulj 完全错误是我写的。关于-h,它不显示子解析器
标签: python import python-import argparse