Python 2.x 可选子解析器 - 错误参数太少

2023-12-15

我一直在尝试设置一个带有两个子解析器的主解析器,以便在单独调用时,主解析器会显示一条帮助消息。

def help_message():
    print "help message"

import argparse
parser = argparse.ArgumentParser()

subparsers = parser.add_subparsers(dest='sp')

parser_a = subparsers.add_parser('a')
parser_a.required = False
#some options...
parser_b = subparsers.add_parser('b')
parser_b.required = False
#some options....

args = parser.parse_args([])

if args.sp is None:
    help_message()
elif args.sp == 'a':
    print "a"
elif args.sp == 'b':
    print "b"

这段代码在 Python 3 上运行良好,我希望它在 Python 2.x 上也能运行良好

我在运行“python myprogram.py”时收到此消息

myprogram.py: error: too few arguments

这是我的问题:我如何在 shell 中编写“python myprogram.py”并获取帮助消息而不是错误。


我认为您正在处理中讨论的错误http://bugs.python.org/issue9253

Your subparsers是一个位置论证。这种论证总是需要的,除非nargs='?'(或者 *)。我认为这就是您在 2.7 中收到错误消息的原因。

但在最新的 py 3 版本中,测试所需参数的方法发生了变化,并且子解析器被忽略了。现在他们是optional(非必需)。有一个建议的补丁/软糖可以制作argparse行为与以前一样(需要子解析器条目)。我预计最终 py3 argparse 将恢复到 py2 实践(可以选择接受required=False范围)。

所以而不是测试args.sp is None,你可能想测试sys.argv[1:]打电话之前parse_args. Ipython这样做是为了产生它自己的帮助消息。

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

Python 2.x 可选子解析器 - 错误参数太少 的相关文章

随机推荐

  • 分解日期之间的日期,检查和调整参数

    我使用了一个函数使用函数获取两个日期之间的日期列表效果非常好 但是 我需要对通过的结束日期进行额外检查 有时此日期将为空 因为如果记录仍然是最新的 则不会输入该记录 如果是 我想用当前日期替换它 以便返回从开始日期到当前日期的日期 我想输入
  • 如何设置输入占位符各个部分的样式? [复制]

    这个问题在这里已经有答案了 是否可以对输入占位符的各个部分进行样式设置 一个例子 请输入此处 另请注意 您只能进入一次 你不能用标准做到这一点placeholder属性 我将详细介绍另一种方法 即使用输入元素周围的一些包装器来制作自定义占位
  • 将函数应用于具有多种空白字符的字符串中的每个单词的最Pythonic 方法是什么?

    假设我有一个函数 def f a return a 1 我想将函数 f 应用于字符串上的每个单词 如果字符串仅由空格组成 我可以这样做 gt gt gt s this is a banana gt gt gt join map f s sp
  • 创建带有节点和复选框的 TreeView

    我像这样创建了 TreeView TreeView CreateWindowEx 0 WC TREEVIEW TEXT Tree View WS VISIBLE WS CHILD 0 0 200 500 hwnd HMENU ID TREE
  • 静态表生成适用于 GCC,但不适用于 clang; clang 被窃听了吗?

    我曾经写过一些代码 在编译时为某些模板元编程生成静态表 数组 这个想法是可以在编译时构建 C 风格的字符串 它们只是char数组 这个想法和代码是基于林大卫 s answer include
  • React-Leaflet MapContainer 在状态更新时未使用新位置值进行渲染

    我是基于 Typescript 和 Hook 的 React 应用程序的新传单用户 在我的应用程序中 应用程序使用 chrome 浏览器的地理定位 API 获取了我当前的地理位置 纬度 经度 我已允许浏览器的权限 并且应使用标记在地图中显示
  • Java中如何快速截图?

    我正在实现一个简单的眼动仪 它需要在从网络摄像头捕获视频的同时快速截取屏幕上发生的情况 问题是用机器人来做这件事的方式 这里提到 https stackoverflow com questions 2475303 java library
  • 购物车中每个产品类别仅允许一种产品

    On this 问题 答案我找到了有关如何在 Woocommerce 中的购物车中为每个类别添加一个产品的 PHP 代码 该代码工作得很好 但我想将最新添加的产品添加到购物车 如果购物车中已经有该类别的产品 我想删除最旧的产品 add fi
  • 如何使用 vuetify 使字体大小响应?

    In vuetify他们有排版辅助类 例如 display 4货物用于h1 这是完整列表 当我为某些元素选择 display 1 时 在所有分辨率中 该类都会获得相同的字体大小 34px 我本来期待 display 4屏幕宽度为 1024
  • Spring Cloud Stream @SendTo注释不起作用

    我正在将 Spring Cloud Stream 与 Spring Boot 结合使用 我的应用程序非常简单 示例服务 类 EnableBinding Processor1 class Service public class Exampl
  • 仅用于文件大小的 Windows 命令

    是否有 Windows 命令可以像这样输出指定文件的大小 以字节为单位 gt filesize test jpg 65212 我知道dir命令输出此信息 但它也输出其他信息 我可以轻松编写这样的程序 但如果可能的话 我更愿意使用本机 Win
  • PHP-如何在数组内合并数组[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 php中如何合并n个数组我的意思是我怎样才能完成这样的工作 array merge from result 0 to result count result 1 OR array me
  • Winforms:如何使用C#将图片上传到SQL Server数据库

    我想将图像上传到我的 SQL Server 数据库 我有两个按钮 一个图片框 使用浏览按钮 我可以从磁盘中选择文件 并将其显示在图片框中 问题是我无法将图片从图片框保存到数据库中 请帮我解决代码 欣赏它 您可以直接从其路径保存图像 您已经拥
  • python pandas 中的分块文件上的数百万个键上的 grouby 出现问题

    我有一个非常大的 CSV 文件 数十千兆 其中包含带有以下列的网络日志 user id time stamp category clicked 我必须构建一个记分器来识别用户喜欢和不喜欢的类别 请注意 我有超过 1000 万用户 我首先把它
  • 将转换器绑定到 Windows Phone 8 应用程序中的 XAML

    我的 xaml 页面代码
  • Math.max 和 Math.min 输出允许的最高和最低值

    所以我试图制作一个程序来输出总和 平均值 最小值和最大值 我基本上已经弄清楚了除了最小和最大值输出 2147483647 和 2147483647 之外的所有内容 我相信这是 Java 将计算的绝对最小和最大值 无论如何 我想计算用户输入的
  • 如何在警报对话框中设置警报文本大小

    默认情况下的警报消息对于屏幕较小的特定设备来说太大 我想将其设置为自定义 dp 我的警报是这样的 OnClickListener addNewItemListener new OnClickListener public void onCl
  • 嵌入仅限 Perl 的模块以及嵌入式 Perl 解释器

    我跟着https perldoc perl org perlembed并成功建立了interp二进制 当我使用static ext 输出目录有 pm文件安装到前缀目录中 如何添加自定义简单 pm模块如TLUtils pm无需将模块文件解压到
  • Python,字符串中字符的具体计数

    我正在尝试计算 python 中字符串出现的次数 我想采用二进制输入 例如 001101 然后计算 1 0 11 00 等的数量 我试图通过使用 count 来实现这一点 但是当我只希望它输出 1 1 和 1 11 时 这会输出有 3 个
  • Python 2.x 可选子解析器 - 错误参数太少

    我一直在尝试设置一个带有两个子解析器的主解析器 以便在单独调用时 主解析器会显示一条帮助消息 def help message print help message import argparse parser argparse Argum