当没有任何参数调用脚本时,使用python argparse显示帮助消息

问题:

这可能是一个简单的。假设我有一个使用argparse处理命令行参数/选项的程序。以下将打印“帮助”消息:

./myprogram -h

要么:

./myprogram --help

但是,如果我没有任何参数运行脚本,它不会做任何事情。我想要的是在没有参数调用时显示使用消息。怎么做?

回答:

这个答案来自Steven Bethard on Google groups。我正在转发这里,让没有Google帐户的人更容易访问。
您可以覆盖error方法的默认行为:

import argparse
import sys

class MyParser(argparse.ArgumentParser):
    def error(self, message):
        sys.stderr.write('error: %s\n' % message)
        self.print_help()
        sys.exit(2)

parser=MyParser()
parser.add_argument('foo', nargs='+')
args=parser.parse_args()

请注意,每当触发error方法时,上述解决方案将打印帮助消息。例如,如果--blah不是有效的选项,test.py --blah也会打印帮助信息。
如果只有在命令行中没有提供任何参数的情况下才打印帮助消息,那么这仍然是最简单的方法:

import argparse
import sys

parser=argparse.ArgumentParser()
parser.add_argument('foo', nargs='+')
if len(sys.argv)==1:
    parser.print_help()
    sys.exit(1)
args=parser.parse_args()

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: Display help message with python argparse when script is called without any arguments

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

83 − 81 =