如何自动显示命令行参数错误的帮助信息?
现在,当我输入无效的选项或者漏掉了位置参数时,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)