使用Python的argparse模块添加子分析器的方法是
import argparse
master_parser = argparse.ArgumentParser('Master')
master_parser.add_argument('--master', help='arg for master parser')
subparsers = master_parser.add_subparsers(title='subcommands')
# add subparser
sub_parser = subparsers.add_parser('run')
sub_parser.add_argument('--sub', help='args for subparser')
master_parser.parse_args()
效果很好,您可以使用
python test.py -h
python test.py run -h
查看主解析器和子解析器的帮助消息。
然而,在某种情况下,我想将一个完整的程序作为“插件”添加到另一个程序中,所以我想做类似的事情
import argparse
master_parser = argparse.ArgumentParser('Master')
master_parser.add_argument('--master', help='arg for master parser')
subparsers = master_parser.add_subparsers(title='subcommands')
# subparser defined in another module
sub_parser = argparse.ArgumentParser('run')
sub_parser.add_argument('--sub', help='args for subparser')
# add subparser to the master parser. THIS DOES NOT WORK
subparsers.add_parser(sub_parser)
master_parser.parse_args()
有谁知道实现这个目标的好方法?我想在最坏的情况下,我需要剖析sub_parser并将其一块一块地提供给主解析器。