当不带任何参数调用脚本时,使用 Python argparse 显示帮助消息

2024-02-09

假设我有一个程序使用argparse处理命令行参数/选项。以下将打印“帮助”消息:

./myprogram -h

or:

./myprogram --help

但是,如果我在没有任何参数的情况下运行脚本,它不会执行任何操作。我想要它做的是在不带参数调用它时显示使用消息。这是怎么做到的?


这个答案来自史蒂文·贝萨德在 Google 群组中 http://groups.google.com/group/argparse-users/browse_thread/thread/2dacd5fed110bd0c?pli=1。我将其重新发布到此处,以便没有 Google 帐户的人可以更轻松地访问。

您可以覆盖默认行为error method:

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 建议 https://stackoverflow.com/questions/4042452/display-help-message-with-python-argparse-when-script-is-called-without-any-argu/4042861?noredirect=1#comment84996345_4042861, use parser.print_help(sys.stderr)打印到 stderr。

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

当不带任何参数调用脚本时,使用 Python argparse 显示帮助消息 的相关文章

随机推荐

  • 如何获取 Rails 表单或 field_for 块内的底层对象?

    我无法弄清楚如何获取 form for 或 field for 块中的底层对象 我想做的是这样的 和 children 是一个多态 has many 关联 建议 这不就是
  • 带 lambda 表达式的起订量?

    我正在尝试使用 Moq 4 0 10827 在 NuGet 上 测试应用程序服务 并且需要查询存储库 public class MyService Repository
  • Python - excel:写入多个单元格需要时间

    我正在使用 win32com client 将数据写入 Excel 文件 这花费了太多时间 下面的代码模拟了我想要更新 Excel 的数据量 大约需要 2 秒 有没有一种方法可以在一次调用中更新多个单元格 具有不同的值 而不是一个一个地填充
  • 以编程方式向 Gradle 添加风味

    我有一个 Android 项目 目前正在其中构建 20 种风格 并且可能会构建超过 100 种 每种风格唯一改变的是一些资源文件 可绘制对象和字符串 我想使用 gradle 遍历 src 中的每个文件夹 并根据该风味的目录名称创建包名称为
  • 如何注册我自己的 Firefox 扩展?

    我正在尝试学习如何编写 Firefox 扩展 我从下载了一个 HelloWorld 示例here http kb mozillazine org Getting started with extension development reg
  • 为什么不能为函数的形参指定存储类别?

    当我执行以下操作时 代码工作正常 include
  • 在 Java 中连接来自 HBase 的两个结果集?

    是否可以连接从 java 中的 hbase 检索的两个或多个结果集 不 不可能加入 JDBC 结果集 但是 您可以获取它们的结果并手动组合它们 如果它们兼容 如果它们属于同一实体 EDIT 如果您只需要组合两个相同类型的列表 您可以这样做
  • Stargazer 回归输出中具有交互作用的排序变量

    我有以下回归 fit1 lt lm y x1 data data fit2 lt lm y x1 x2 data data fit3 lt lm y x3 x1 data data 我希望输出中的解释变量按顺序排列 x1 x2 x3 最后是
  • 将 Numpy 数组复制到内存视图

    我有一个memoryview on a numpy数组并想复制另一个数组的内容numpy使用此数组将其放入其中memoryview import numpy as np cimport numpy as np cdef double 1 t
  • 将字符串解析为公式的库,适用于 Windows Phone 7

    是否有任何 NET 库可以将字符串解析为公式 IE 如果用户输入 2 5 2 图书馆就能计算出结果吗 编辑 最好是能够与 Windows Phone 7 一起使用而无需太多摆弄的东西会很好 NCalc http ncalc codeplex
  • 是什么原因导致“x.asm:(.text+0xd): 对‘y’的未定义引用”?

    我已经很长一段时间没有使用 C 和汇编语言进行编程了 大约 2 年 现在我决定重新开始 但我想做一些更复杂的事情 我考虑过创建一个简单的内核 现在我在网上找到了这个源代码 启动 asm global loader extern kernel
  • 如何向Vuejs传递url参数

    我正在使用 laravel 和 VueJs 构建一个应用程序 我想知道如何以正确的方式将 url 参数 例如用户 slug 或用户 id 传递给 vuejs 以便能够使用该参数发出 ajax 请求 例如 当有人点击链接时 domain co
  • 使用 eclipse 防止向 SVN 提交带有警告的文件

    我有一个大型 Java 项目 有数千个编译警告 我想找到一种方法来防止开发人员提交带有警告的文件 这样所有警告就会逐渐消失 如果我提交一个带有编译错误的文件 Eclipse 会显示一条错误消息 但我找不到任何方法来对警告执行相同的操作 我发
  • Knockout isDirty 示例,使用映射插件中的动态视图模块

    我在用着瑞安 尼迈耶的肮脏旗帜 http www knockmeout net 2011 05 creating smart dirty flag in knockoutjs html 他的方法的一个例子可以在这里看到jsFiddle ht
  • 序列化/反序列化 ClassCastException:x 无法转换为 java.io.ObjectStreamClass

    使用 Java 本机序列化 我间歇性地看到 ClassCastException java lang ClassCastException myCompany MyClass MembershipServiceMethod cannot b
  • 带有 Webflux 的 JDBC - 如何分派到容器线程

    我正在使用 webflux 进行小型概念验证 在我的应用程序的一部分中 我想与一个数据库进行通信 通过 JDBC 该数据库是阻塞的并且不太适合反应器 尽管如此 对于这个概念验证 我正在考虑以下技巧 定义一个专用的线程池 我们称之为DBThr
  • 在 unix 中将文本附加到文件的最后一行

    我想在文本文件最后一行的末尾附加一个冒号字符 而不是在新行中 我的文件末尾已经有一个 n 字符 所以printf gt gt file将冒号换成新行 Using sed s file gt newfile可以 但我的文件大约有 100 MB
  • 如何使用 nbconvert 从 Jupyter Notebook 转换为 HTML

    我正在尝试获取一个使用 nbconvert 的实际示例 我看过很多博客 但我的想法是正确的 如何选择 Jupyter Notebook 所在的文件夹以及 HTML 输出的目标文件夹 使用 Windows 执行此操作的正确语法是什么 谢谢你
  • 以编程方式创建 Word 2010 文档

    每周我都会制作一份 Word 文档 其中包含来自我们网络上各种来源的一些副本 表格和图表 这可能需要一些时间 有时我会犯错误或忘记应该输入的内容 我想尽可能地自动化这个过程 所以基本上我想制作一个Word模板或控制台应用程序 当我打开 运行
  • 当不带任何参数调用脚本时,使用 Python argparse 显示帮助消息

    假设我有一个程序使用argparse处理命令行参数 选项 以下将打印 帮助 消息 myprogram h or myprogram help 但是 如果我在没有任何参数的情况下运行脚本 它不会执行任何操作 我想要它做的是在不带参数调用它时显