小编典典

在没有任何参数的情况下调用脚本时使用 Python argparse 显示帮助消息

all

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

./myprogram -h

或者:

./myprogram --help

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


阅读 84

收藏
2022-04-24

共1个答案

小编典典

您可以覆盖该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 方法,上述解决方案就会打印帮助消息。例如,如果不是有效选项,test.py --blah也会打印帮助消息。--blah

如果您只想在命令行上没有提供任何参数的情况下打印帮助消息,那么也许这仍然是最简单的方法:

import argparse
import sys

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

请注意,parser.print_help()默认情况下打印到标准输出。正如建议的那样,用于parser.print_help(sys.stderr)打印到
stderr。

2022-04-24