我想使用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
动作类。其call
方法是:
def __call__(self, parser, namespace, values, option_string=None):
parser.print_help()
parser.exit()
请注意,它使用显示帮助parser.print_help()
,然后退出。它在解析-h
字符串后立即发生。这样,它不会产生任何类似too few arguments
or的错误unrecognized arguments
(在解析结束时产生)。
因此,定制帮助的另一种方法是子类化ArgumentParser
,并定义自己的print_help
方法。您还可以自定义exit
和error
方法。
默认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
...
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句