argparse:像帮助字符串一样处理版本字符串
argparse: handle version string like help string
我正在使用 Python 3.6 和 argparse 1.1。
除了 -h
/--help
我还想有一个选项 -v
/--version
打印带有版本信息的字符串并退出程序(就像使用帮助细绳)。但是,当我也有位置参数时,执行
$ example --version
结果
usage: example ...
error: too few arguments
变通解决方案
我有一个解决方案,但我不喜欢它,因为我需要相当多的代码行来做一些 argparse 可以做得更好的事情。
import sys,argparse
class MyParser(argparse.ArgumentParser):
def format_help(self):
return 'Help string\n'
def printversion():
print('0.0.1')
sys.exit(1)
if len(sys.argv)>1:
if len(sys.argv[1])>0:
if sys.argv[1] in ['--version']:
printversion()
parser = MyParser()
parser.add_argument('argument',nargs=1,type=int)
parser.add_argument('-v','--version',action='store_true')
args = vars(parser.parse_args())
if args['version']: printversion()
argparse
已经有 a version
action 正是因为:
'version'
- This expects a version=
keyword argument in the add_argument()
call, and prints version information and exits when invoked:
>>> import argparse
>>> parser = argparse.ArgumentParser(prog='PROG')
>>> parser.add_argument('--version', action='version', version='%(prog)s 2.0')
>>> parser.parse_args(['--version'])
PROG 2.0
我正在使用 Python 3.6 和 argparse 1.1。
除了 -h
/--help
我还想有一个选项 -v
/--version
打印带有版本信息的字符串并退出程序(就像使用帮助细绳)。但是,当我也有位置参数时,执行
$ example --version
结果
usage: example ...
error: too few arguments
变通解决方案
我有一个解决方案,但我不喜欢它,因为我需要相当多的代码行来做一些 argparse 可以做得更好的事情。
import sys,argparse
class MyParser(argparse.ArgumentParser):
def format_help(self):
return 'Help string\n'
def printversion():
print('0.0.1')
sys.exit(1)
if len(sys.argv)>1:
if len(sys.argv[1])>0:
if sys.argv[1] in ['--version']:
printversion()
parser = MyParser()
parser.add_argument('argument',nargs=1,type=int)
parser.add_argument('-v','--version',action='store_true')
args = vars(parser.parse_args())
if args['version']: printversion()
argparse
已经有 a version
action 正是因为:
'version'
- This expects aversion=
keyword argument in theadd_argument()
call, and prints version information and exits when invoked:>>> import argparse >>> parser = argparse.ArgumentParser(prog='PROG') >>> parser.add_argument('--version', action='version', version='%(prog)s 2.0') >>> parser.parse_args(['--version']) PROG 2.0