我正在使用带有argparse 1.1的Python 3.6。
除-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()
答案 0 :(得分:3)
argparse
已经有a version
action这个:
'version'
- 这需要version=
调用中的add_argument()
关键字参数,并打印版本信息并在调用时退出:>>> 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