您可以轻松地将此参数添加到两个解析器(主解析器和子命令解析器):
import argparse
main = argparse.ArgumentParser()
subparser = main.add_subparsers().add_parser('test')
for p in [main,subparser]:
p.add_argument('--arg', action='store_true')
print main.parse_args('--arg test'.split()).arg
print main.parse_args('test --arg'.split()).arg
编辑:正如@hpaulj 在评论中指出的那样,还有一个parents
参数可以传递给ArgumentParser
构造函数或add_parser
方法。您可以在此值解析器中列出作为新值解析器的基础。
import argparse
base = argparse.ArgumentParser(add_help=False)
base.add_argument('--arg', action='store_true')
main = argparse.ArgumentParser(parents=[base])
subparser = main.add_subparsers().add_parser('test', parents=[base])
print main.parse_args('--arg test'.split()).arg
print main.parse_args('test --arg'.split()).arg
更多示例/文档:
寻找在python中给出命令行参数的最佳方式,其中一些参数是某些选项的req,而一些参数是其他选项的req
Python argparse - 向多个子解析器添加参数(我不确定这个问题是否与这个问题重叠太多)
http://docs.python.org/dev/library/argparse.html#parents