对于我的玩具项目mpu
,我想要以下命令:
# Creates a Python project based on a template
$ mpu init
# Checks a Python project for style
$ mpu stylecheck
因此,假设我有一个命令run_init()
和一个命令run_stylecheck()
,还有一个名为argparse.ArgumentParser
的{{1}}对象:
parser
如何向其添加这两个命令?
请不要提出建议手动def run_init():
print('init is executed')
def run_stylecheck():
print('stylecheck is executed')
def get_parser(parser=None):
"""Get parser for packaging part."""
from argparse import ArgumentParser, ArgumentDefaultsHelpFormatter
if parser is None:
parser = ArgumentParser(description=__doc__,
formatter_class=ArgumentDefaultsHelpFormatter)
subparsers = parser.add_subparsers(dest='subparser_name')
pkg_init_parser = subparsers.add_parser('init')
return parser
get_parser().parse_args()
解析的解决方案,也建议不要sys.argv
解析。第一个选项不是一个选项,因为它很难扩展,第二个选项不是一个选项,因为我特别不想使用外部依赖关系-尽管click
很棒。
https://stackoverflow.com/a/27529806/562769我认为也不是一种选择,因为这将有很多不同的命令,并且提供解析器对象的子模块将不会调用该对象。