argparse:处理版本字符串,如帮助字符串

时间:2017-04-24 19:36:09

标签: python argparse

我正在使用带有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()

1 个答案:

答案 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