我正在构建一个具有多个子解析器的软件,我想要那些具有不同convert_arg_line_to_args
定义的软件,所以我所做的是考虑到选择的子解析器来替换我的解析器的功能:
parser = ArgumentParser(fromfile_prefix_chars='@')
subparsers = parser.add_subparsers(title='Available sub commands')
sub_parser = subparsers.add_parser("sub1", help="sub1")
sub_parser.add_argument("--paramsub1", required=True, dest="paramsub1")
sub_parser.set_defaults(cmd_object="sub1")
sub_parser = subparsers.add_parser("sub2", help="sub2")
sub_parser.add_argument("--paramsub2", required=True, dest="paramsub2")
sub_parser.set_defaults(cmd_object="sub2")
我希望 argparse 不检查参数,但告诉我选择了哪个子解析器:
args = vars(parser.parse_args())
if args["cmd_object"] == "sub1": parser.convert_arg_line_to_args = function1
elif args["cmd_object"] == "sub2": parser.convert_arg_line_to_args = function2
args = vars(parser.parse_args())
有任何想法吗?