文本文件中的Argparse自定义帮助

詹姆斯·姆格

我想使用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

有任何想法吗?

hpaulj

您得到的是错误消息,而不是帮助(即不是您的产生的-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 argumentsor的错误unrecognized 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
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中生成自定义文本文件

来自分类Dev

保存自定义设置文本文件的位置?

来自分类Dev

我的自定义.desktop文件在Dash中显示为文本文件

来自分类Dev

将文本文件内容写入Java中的自定义arraylist

来自分类Dev

如何在C ++中读取自定义格式的文本文件

来自分类Dev

将文本文件内容写入Java中的自定义arraylist

来自分类Dev

如何通过Scala中的自定义功能对大型文本文件中的行进行排序?

来自分类Dev

选择自定义行结尾以Qt编写文本文件

来自分类Dev

预处理自定义文本文件以使用Boost Spirit删除注释

来自分类Dev

具有自定义格式的SSIS文本文件目标

来自分类Dev

如何使用Perl检索文本文件的自定义属性

来自分类Dev

使用Shell脚本重新排列“自定义顺序”中文本文件的列

来自分类Dev

如何使用自定义(多行)行终止符读取文本文件?

来自分类Dev

如何将产品保存到自定义文本文件?

来自分类Dev

使用自定义名称和大小分割文本文件

来自分类Dev

使用 Bash 从自定义文本文件中提取 IP 地址

来自分类Dev

如何将自定义数据保存到文本文件?

来自分类Dev

需要帮助来解析Perl中的文本文件

来自分类Dev

Julia中的字典帮助-从文本文件创建字典

来自分类Dev

Python帮助| 从底部读取文本文件中的数据

来自分类Dev

Argparse:设置默认文本文件

来自分类Dev

自定义argparse帮助消息

来自分类Dev

帮助文本缓冲区中的自定义映射

来自分类Dev

如何包含自定义模板中的帮助文件?

来自分类Dev

Matplotlib从文本文件定义数组

来自分类Dev

html/php 使用自定义文件名创建文本文件并将其保存到根目录

来自分类Dev

从文本文件中删除文本

来自分类Dev

argparse中的自定义“使用”功能?

来自分类Dev

argparse中的自定义“使用”功能?

Related 相关文章

  1. 1

    在Java中生成自定义文本文件

  2. 2

    保存自定义设置文本文件的位置?

  3. 3

    我的自定义.desktop文件在Dash中显示为文本文件

  4. 4

    将文本文件内容写入Java中的自定义arraylist

  5. 5

    如何在C ++中读取自定义格式的文本文件

  6. 6

    将文本文件内容写入Java中的自定义arraylist

  7. 7

    如何通过Scala中的自定义功能对大型文本文件中的行进行排序?

  8. 8

    选择自定义行结尾以Qt编写文本文件

  9. 9

    预处理自定义文本文件以使用Boost Spirit删除注释

  10. 10

    具有自定义格式的SSIS文本文件目标

  11. 11

    如何使用Perl检索文本文件的自定义属性

  12. 12

    使用Shell脚本重新排列“自定义顺序”中文本文件的列

  13. 13

    如何使用自定义(多行)行终止符读取文本文件?

  14. 14

    如何将产品保存到自定义文本文件?

  15. 15

    使用自定义名称和大小分割文本文件

  16. 16

    使用 Bash 从自定义文本文件中提取 IP 地址

  17. 17

    如何将自定义数据保存到文本文件?

  18. 18

    需要帮助来解析Perl中的文本文件

  19. 19

    Julia中的字典帮助-从文本文件创建字典

  20. 20

    Python帮助| 从底部读取文本文件中的数据

  21. 21

    Argparse:设置默认文本文件

  22. 22

    自定义argparse帮助消息

  23. 23

    帮助文本缓冲区中的自定义映射

  24. 24

    如何包含自定义模板中的帮助文件?

  25. 25

    Matplotlib从文本文件定义数组

  26. 26

    html/php 使用自定义文件名创建文本文件并将其保存到根目录

  27. 27

    从文本文件中删除文本

  28. 28

    argparse中的自定义“使用”功能?

  29. 29

    argparse中的自定义“使用”功能?

热门标签

归档