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'動作類型。它會像'版本'一樣,但沒有系統退出,並可能更多地控制格式和打印目標。