将完整的ArgumentParser添加到主解析器?

时间:2016-12-02 18:51:30

标签: python argparse

使用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并将其一块一块地提供给主解析器。

0 个答案:

没有答案