format_version
(和print_version
它使用format_version
)显示parser.version
属性,该属性可以与version
参数进行设置。但正如Martijn所写的那样,显示版本的方法已被删除。你会收到一条警告消息。
action='version'
参数采用不同的路线。它有自己的version
参数(但使用parser.version
作为备份)。当由参数字符串-v
触发时,它显示该版本信息并调用系统退出。
你仍然可以调用-v
,并避免与try块,系统退出:
try:
p.parse_args(['-V'])
except SystemExit:
pass
这是很方便的测试,而不是在生产中想要的东西。另外还会陷入其他退出,如帮助和错误。
与任何参数一样,您可以保存到Action的链接,并显示,使用甚至修改其属性。
version_action = parser.add_argument('--version', '-V', action='version',
version="%(prog)s " + __version__)
print version_action
print version_action.version
assert isinstance(version_action, argparse._VersionAction)
功能,这是一样的Martijn的搜索parser._get_optional_actions()
的,但更简单。在这种情况下,它的作用是填补了%(prog)s
串
def foo(action, parser):
formatter = parser._get_formatter()
formatter.add_text(action.version)
return formatter.format_help()
foo(version_action, parser)
虽然:
您可以复制_VersionAction.__call__
的动作,没有系统的出口,有。
http://bugs.python.org/issue9399'为argparse'提供'print'动作,讨论添加'print'或'write'动作类型。它会像'版本'一样,但没有系统退出,并可能更多地控制格式和打印目标。