如何自动显示命令行参数错误的帮助信息?

29 投票
5 回答
22539 浏览
提问于 2025-04-16 03:40

现在,当我输入无效的选项或者漏掉了位置参数时,argparse会让我回到命令行提示符,并显示我应用程序的使用说明。

这样也可以,但我更希望能自动显示完整的帮助信息(解释选项等内容),而不是让用户自己输入

./myscript.py -h

5 个回答

4

我刚刚用下面的写法解决了同样的问题:

parser = ArgumentParser()
... add arguments ...
parser.usage = parser.format_help()
args = parser.parse_args()
34

如果你想打印帮助信息,可以使用:print_help 函数,这个函数是在 ArgumentParser 实例上调用的。

parser = argparse.ArgumentParser()
(...)
parser.print_help()

如果你想在出现错误时打印帮助信息,你需要创建一个自己的 ArgumentParser 子类,并重写 error() 方法;比如:

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

然后你就可以使用它了:

parser = MyParser()

当这个解析器遇到无法解析的参数时,它会打印出帮助信息。

17

在这个Google 讨论组的帖子里,有一段代码,看起来可以解决问题(稍微修改了一下)。

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

撰写回答