gpt4 book ai didi

python - 来自文本文件的 Argparse 自定义帮助

转载 作者:太空狗 更新时间:2023-10-30 00:35:28 25 4
gpt4 key购买 nike

我想使用 argparse 库,因为它很灵活,但我无法禁用默认帮助对话框来显示文本文件中的自定义帮助对话框。我想要做的就是在传递“-h”或“--help”选项时显示文本文件中的文本。这是我如何尝试的示例:

parser = argparse.ArgumentParser(add_help=False)
parser.add_argument("file", type=str, nargs='+')
parser.add_argument("-xmin", type=float)
parser.add_argument("-xmax", type=float)
parser.add_argument("-ymin", type=float)
parser.add_argument("-ymax", type=float)
parser.add_argument("-h", "--help", action="store_true")

args = parser.parse_args()

if args.help is True:
print isip_get_help()
exit(-1)

但它仍然输出:

nedc_[1]: python isip_plot_det.py -h
usage: isip_plot_det.py [-xmin XMIN] [-xmax XMAX] [-ymin YMIN] [-ymax YMAX]
[-h]
file [file ...]
isip_plot_det.py: error: too few arguments

有什么想法吗?

最佳答案

您得到的是一条错误消息,而不是帮助(即它不是由您的 -h 生成的)。

isip_plot_det.py: error: too few arguments

错误信息显示的是正常帮助的用法部分。您可以使用 usage 参数更改它:

parser = ArgumentParser(usage = 'my custom usage line')

您还可以使用

测试使用显示
parser.print_usage()

astr = parser.format_usage()

获取可打印的字符串。

普通的help 参数使用特殊的help 操作类。它的调用方法是:

def __call__(self, parser, namespace, values, option_string=None):
parser.print_help()
parser.exit()

请注意,它使用 parser.print_help() 显示帮助,然后退出。一旦它解析 -h 字符串就会发生这种情况。这样它就不会产生任何错误,例如 too few argumentsunrecognized arguments(在解析结束时产生)。

因此另一种自定义帮助的方法是子类化 ArgumentParser,并定义您自己的 print_help 方法。您还可以自定义 exiterror 方法。

默认的 print_help 是:

def print_help(self, file=None):
if file is None:
file = sys.stdout
self._print_message(self.format_help(), file)

您可以改为自定义 format_help

 class MyParser(argparse.ArgumentParser):
def format_help(self):
return 'my custom help message\n second line\n\n'

示例用法:

In [104]: parser=MyParser(usage='custom usage')
In [105]: parser.parse_args(['-h'])
my custom help message
second line
...

In [106]: parser.parse_args(['unknown'])
usage: custom usage
ipython3: error: unrecognized arguments: unknown
...

关于python - 来自文本文件的 Argparse 自定义帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33906513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com