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

标签 python argparse

假设我有一个使用 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) 打印到 stderr。

关于python - 在没有任何参数的情况下调用脚本时使用 Python argparse 显示帮助消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4042452/

相关文章:

python - 在 python 中抽象出重复的异常处理有哪些优雅的方法?

python - 单级到多级数据框

python - keras多层LSTM模型的股价预测收敛于恒定值

python - 使用 argparse 解析字符串

python - 如何传递文件中包含的命令行参数并保留该文件的名称?

python - argparse 其他参数隐含的子解析器

python - Argparse:如何接受具有不同 "types"的参数

python - Django:防止字符串被 unicode 转义?

Python 从更高/其他文件夹导入函数

python - 如何显示 argparse 中所有子解析器的帮助?