python argparse:如何在出错时自动显示帮助?

jps*_*n.w 21 python argparse

目前,当我输入无效选项或省略位置参数时,argparse会将我踢回提示并显示我的应用的使用情况.这没关系,但我宁愿自动显示完整的帮助列表(解释选项等),而不是要求用户输入

./myscript.py -h

谢谢!

杰米

jb.*_*jb. 31

要打印帮助,您可能需要使用:print_helpfunction on ArgumentParserinstance

parser = argparse.ArgumentParser()
(...)
parser.print_help()
Run Code Online (Sandbox Code Playgroud)

要在出错时打印帮助消息,您需要创建自己的ArgumentParser实例子类,这将覆盖error()方法.例如:

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

当此解析器遇到不可解析的参数行时,它将打印帮助.


小智 15

Google群组中的这个帖子有以下代码片段,似乎可以解决这个问题(略有修改).

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

  • 在这里使用`self.print_help(sys.stderr)`是否有意义? (6认同)