这可能是一个简单的。假设我有一个使用 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
出现时,上述解决方案将打印帮助消息方法被触发。例如,
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()
打印到标准输出。作为 init_js suggests ,使用 parser.print_help(sys.stderr)
打印到标准错误。关于python - 在没有任何参数的情况下调用脚本时,使用 python argparse 显示帮助消息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4042452/