现在我正在使用它:
parser = argparse.ArgumentParser(description='Run the Foo',
formatter_class=argparse.ArgumentDefaultsHelpFormatter)
其中打印出默认值:
--install-only Do not run benchmark or verification, just install and
exit (default: False)
是否有一种简单的方法可以将 打印出类型,如下所示:
--install-only Do not run benchmark or verification, just install and
exit (default: False) (type: Boolean)
答案 0 :(得分:1)
您可以制作自己的HelpFormatter
课程,其灵感来自argparse.py
中包含的课程:
class DefaultsAndTypesHelpFormatter(argparse.HelpFormatter):
def _get_help_string(self, action):
help = action.help
if '%(default)' not in action.help:
if action.default is not argparse.SUPPRESS:
defaulting_nargs = [argparse.OPTIONAL, argparse.ZERO_OR_MORE]
if action.option_strings or action.nargs in defaulting_nargs:
help += ' (default: %(default)s)'
if action.type:
help += ' (type: %(type)s)'
return help
这将主要执行您想要的操作,但请注意它不会打印action='store_true'
的类型。我认为没问题,因为(default: False)
已经很清楚,但是如果你想要更加明确,你可以添加像if isinstance(action, argparse._StoreTrueAction)
这样的条款并添加你喜欢的任何内容。
答案 1 :(得分:1)
ArgumentDefaultsHelpFormatter
只会在所有参数帮助行中添加%(default)s
字符串。你可以自己添加。您也可以添加%(type)s
字符串。
p=argparse.ArgumentParser()
p.add_argument('--install-only',type=int,help='default %(default)s, type %(type)s')
p.print_help()
制造
usage: ipython [-h] [--install-only INSTALL_ONLY]
optional arguments:
-h, --help show this help message and exit
--install-only INSTALL_ONLY
default None, type int
请注意,type
通常是int
,float
或None
(这是默认的'字符串'类型)。没有Boolean
type
- 除非您编写了将字符串转换为True / False值的函数。对于store_true
操作,type
为None
。
action
参数通常是一个字符串,但它被转换为Action子类,而不是Action本身的属性。因此%(action)s
将无效。
因此虽然可以在帮助热线中显示type
属性,但我认为它的价值有限。只需在帮助字符串中明确包含该信息,您就可以获得更大的控制权。