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

2023-12-29

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

or

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 and error方法。

默认print_help is:

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
...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

来自文本文件的 Argparse 自定义帮助 的相关文章

  • 2d 图像点和 3d 网格之间的交点

    Given 网格 源相机 我有内在和外在参数 图像坐标 2d Output 3D 点 是从相机中心发出的光线穿过图像平面上的 2d 点与网格的交点 我试图找到网格上的 3d 点 This is the process From Multip
  • 为什么我的混淆矩阵只返回一个数字?

    我正在做二元分类 每当我的预测等于事实时 我发现sklearn metrics confusion matrix返回单个值 难道没有问题吗 from sklearn metrics import confusion matrix print
  • 如何删除 PyCharm 中的项目?

    如果我关闭一个项目 然后删除该项目文件夹 则在 PyCharm 重新启动后 会再次创建一个空的项目文件夹 只需按顺序执行以下步骤即可 他们假设您当前在 PyCharm 窗口中打开了该项目 单击 文件 gt 关闭项目 关闭项目 在 PyCha
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • python array(10,1) 和 array(10,) 之间的区别

    我正在尝试将 MNIST 数据集加载到数组中 当我使用 X train y train X test y test mnist load data 我得到一个数组 y test 10000 但我希望它的形状为 10000 1 数组 1000
  • 检查 python 中命令行参数的数量

    我是蟒蛇新手 还是把脚弄湿了 我正在尝试做这样的事情 import sys if len sys argv lt 3 or lt len sys argv gt 3 print This script will compare two fi
  • 使用 Pytest 的参数化添加测试功能的描述

    当其中一个测试失败时 可以在测试正在测试的内容的参数化中添加描述 快速了解测试失败的原因 有时您不知道测试失败的原因 您必须查看代码 通过每个测试的描述 您就可以知道 例如 pytest mark parametrize num1 num2
  • 用于(联合国)结构化文本文档的词法分析器/解析器[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有很多脚本解析器和词法分析器 即结构化计算机语言 但我正在寻找一个可以将 几乎 非结构化文本文档分成更
  • 如何使用 Homebrew 在 Mac 上安装 Python 2 和 3?

    我需要能够在 Python 2 和 3 之间来回切换 我如何使用 Homebrew 来做到这一点 因为我不想弄乱路径并陷入麻烦 现在我已经通过 Homebrew 安装了 2 7 我会用pyenv https github com yyuu
  • 在Python中读取tiff标签

    我正在尝试用 Python 读取 tiff 文件的标签 该文件是 RGB 的uint16每个通道的值 我目前正在使用tifffile import tifffile img tifffile imread file tif 然而 img是一
  • 仅当某些值相等时,如何才能将一个文本文件中的值替换为另一个文本文件中的其他值?

    我有一个名为finalscores txt我想创建一个 python 脚本 它将打开它并从两个单独的列中读取值 这是我的finalscores txt file Atom nVa predppm avgppm stdev delta QPr
  • Python“非规范化”unicode 组合字符

    我正在寻找标准化 python 中的一些 unicode 文本 我想知道是否有一种简单的方法可以在 python 中获得组合 unicode 字符的 非规范化 形式 例如如果我有序列u o xaf i e latin small lette
  • Python 2 的 `exceptions` 模块在 Python3 中丢失了,它的内容到哪里去了?

    一位朋友提到 对于 Python 2 假设您在命令行上的路径环境变量中有它 pydoc exceptions 非常有用 知道它应该可以为他每周节省几分钟的网络查找时间 我自己每周都会用谷歌搜索一次例外层次结构 所以这对我来说也是一个有用的提
  • 检索 geodjango 多边形对象的边界框

    如何在 geodjango 中获取 MultiPolygon 对象的边界框 在 API 中找不到任何内容http geodjango org docs geos html http geodjango org docs geos html
  • 使用seaborn绘制简单线图

    我正在尝试使用seaborn python 绘制ROC曲线 对于 matplotlib 我只需使用该函数plot plt plot one minus specificity sensitivity bs where one minus s
  • 为正则表达式编写解析器

    即使经过多年的编程 我很羞愧地说我从未真正完全掌握正则表达式 一般来说 当问题需要正则表达式时 我通常可以 在一堆引用语法之后 想出一个合适的正则表达式 但我发现自己越来越频繁地使用这种技术 所以 自学并理解正则表达式properly 我决
  • 确定分割形状几何体的“左”侧和“右”侧

    我的问题是 我怎样才能确定哪一个Aside and Bside的侧面已经分割的旋转矩形几何体 http nbviewer jupyter org urls dl dropbox com s ll3mchnx0jwzjnf determine
  • PyInstaller“ValueError:源代码字符串不能包含空字节”

    我得到了一个ValueError source code string cannot contain null bytes执行命令时pyinstaller main py在具有和不具有管理员权限的cmd中 Traceback most re
  • 仅允许正小数

    在我的 Django 模型中 我创建了一个如下所示的小数字段 price models DecimalField u Price decimal places 2 max digits 12 显然 价格为负或零是没有意义的 有没有办法将小数
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col

随机推荐

  • 为什么在 LEA 中使用方括号?

    在装配中 方括号 似乎具有相同的含义 in C编程语言 它们用于取消引用指针 取消引用指针意味着要引用特定的内存位置来读取或写入它 因此 在 a 的情况下使用方括号是非常合乎逻辑的MOV 但他们也将其用于 LEA 的逻辑原因是什么 LEA
  • Web 浏览器:当托管网页上的链接没有触发“文档已完成”时,对活动进行排序

    假设此方法适用于网络浏览器中的 HTML 页面 bool semaphoreForDocCompletedEvent private void button12 Click object sender EventArgs e checkBo
  • 不支持Python解码Unicode

    我的 Python 编码有问题 我尝试了不同的方法 但似乎找不到将输出编码为 UTF 8 的最佳方法 这就是我正在尝试做的 result unicode google searchGoogle param utf 8 encode utf
  • 如何在 Mac 上匹配 ttk/Tkinter 笔记本中框架的背景颜色?

    在我的 Mac 上开发基于 Tkinter ttk 的 GUI 时 我注意到背景颜色和 Notebook 小部件存在问题 当添加一个ttk Frame as a ttk Notebook选项卡 框架显示的背景与笔记本选项卡的 插入 背景不匹
  • Xamarin Android 警报管理器问题

    我有一个AlarmManager在我的 Xamarin Android 应用程序中 我正在使用它进行配置SetExact 时间为5分钟 但仅仅五秒钟后它就开始了 而且无论我在什么时间配置它 它总是会在 5 秒后触发 我在 Java 中使用了
  • 在表视图单元格中显示多行 - IOS

    我想在我正在开发的 IOS 应用程序的表格单元格视图中显示多行 准确地说 我有一个表视图 其中将填充从服务器返回的 JSON 数据 如果返回的状态为 0 或 2 状态是为配置文件返回的 JSON 对象之一 我必须显示 5 6 行的错误消息
  • 有什么方法可以从 Eclipse 自动生成 ant build.xml 文件吗?

    从 Eclipse 中 我发现我可以轻松地为我的项目导出 Ant 构建文件 它提供对第三方库和一些基本目标的引用 我从我的全局构建文件中使用它 唯一让我困扰的是 如果项目结构中发生了某些修改 例如添加新的第 3 方库 我们必须考虑 是的 有
  • 为什么我无法设置 DataGridTextColumn 的样式?

    我尝试创建一个样式DataGridTextColumn用下面的代码 然而 Visual Studio 2010 的亮点 x Type DataGridTextColumn 用蓝线并详细说明 Exception has been thrown
  • 当块已经有自己的作用域时,设置 Ruby 块局部变量的目的是什么?

    Learning about Ruby blocks here http rubylearning com satishtalim ruby blocks html What is the point of having block loc
  • 我可以让 Tomcat 作为转储堆服务运行吗?

    我正在尝试让 Tomcat 当前在 Windows 2003 机器上作为服务运行 将堆转储到OutOfMemoryError Tomcat 正在运行 Hudson 它在构建的尾部报告了堆空间问题 手动运行构建不会产生此类错误 Hudson
  • 即使目标存在也复制文件(在 Qt 中)

    In the QFile 复制 http doc qt digia com qt qfile html copy 2它说的文档 如果名为 newName 的文件已存在 则 copy 返回 false 即 QFile 不会覆盖它 但即使目的地
  • Reactjs - event.stopPropagation 不起作用

    我有一个Post基本上渲染的是一张卡片的组件 如果该帖子被点击 那么URL应该路由到 expand 现在我有另一个组件称为DeleteTemplate它呈现一个按钮并单击它呈现一个Modal 现在 我已经使用了这个DeleteTemplat
  • 在 iPhone/iPad 上保存 HLS 流

    我有一个 iPhone iPad 应用程序 可以播放电视频道的 HTTP 直播 我想添加录制功能以将直播流保存在设备上 就像电视录像机一样 我不知道是否可能 但我认为我有两种方法来录制流 保存屏幕上显示的输出流 但我不知道该怎么做 打开 m
  • PHP:如何禁用危险函数

    我怎样才能禁用危险的eval功能 可以使用以下方法完成吗ini set功能 另外如何禁用以下功能 我们可以使用禁用它们吗ini set功能 allow url fopen allow url include exec shell exec
  • 无法安装包“Microsoft.Owin.Security 2.0.1”

    无法安装包 Microsoft Owin Security 2 0 1 您正在尝试将此包安装到面向 NETFramework Version v4 0 的项目中 但该包不包含任何与该框架兼容的程序集引用或内容文件 有关详细信息 请联系包作者
  • 是否可以在不失去对文本框的焦点的情况下单击按钮?

    我正在尝试在 C WPF 项目中开发一个触摸屏键盘控件 当 TextBox 获得焦点时该控件将可见 而当 TextBox 失去焦点时该控件将隐藏 我见过的触摸屏键盘项目通过将键盘定义为新窗口而不是控件来实现这一点 对于我的应用程序 我真的希
  • 如何为 listView 项目使用 PercentRelativeLayout

    我正在尝试使用百分比相对布局 into 列表显示 但它不起作用 高度和宽度百分比被忽略 列表视图中没有显示任何内容 它只适用于棉花糖 这是列表项 xml
  • 手动设置 aws-amplify 用户会话

    我有一个由多个应用程序使用的认知用户池 我有一个中央身份验证应用程序 用户可以在其中登录 注册 重置密码 等任何与身份验证相关的内容 我还有五个用户可以访问的其他应用程序 我没有让他们登录每个应用程序 而是将身份验证应用程序嵌入到 ifra
  • 节点更新特定包

    我想更新我的浏览器同步无需更新我的所有节点包 我怎样才能实现这个目标 我当前版本的浏览器同步没有浏览器同步 GUI email protected cdn cgi l email protection email protected cdn
  • 来自文本文件的 Argparse 自定义帮助

    我想使用 argparse 库 因为它的灵活性 但我在禁用默认帮助对话框以显示文本文件中的自定义帮助对话框时遇到问题 我想做的就是在传递 h 或 help 选项时显示文本文件中的文本 这是我如何尝试的示例 parser argparse A