Python argparse 与 nargs 行为不正确

2023-12-06

这是我的 argparse 示例,即sample.py

import argparse
parser = argparse.ArgumentParser()
parser.add_argument("-p", nargs="+", help="Stuff")
args = parser.parse_args()
print args

Python-2.7.3

我希望用户在 -p 选项后提供一个由空格分隔的参数列表。例如,如果您运行

$ sample.py -p x y 
Namespace(p=['x', 'y'])

但我的问题是当你跑步时

$ sample.py -p x -p y
Namespace(p=['y'])

这既不在这里也不在那里。我想要以下其中一项

  • 向用户抛出一个异常,要求他不要使用 -p 两次,而只是将它们作为一个参数提供
  • 假设它是相同的选项并生成 ['x','y'] 列表。

我可以看到 python 2.7 没有做这两个事情,这让我很困惑。我可以让 python 执行上面记录的两种行为之一吗?


注意:python 3.8 添加了一个action="extend"这将创建所需的 ['x','y'] 列表

要生成 ['x','y'] 列表,请使用action='append'。实际上它给出了

Namespace(p=[['x'], ['y']])

对于每个-p它给出了一个列表['x']按照规定nargs='+', but append意思是,将该值添加到命名空间已有的值中。默认操作只是设置值,例如NS['p']=['x']。我建议查看action文档中的段落。

optionals通过设计允许重复使用。它可以实现类似的操作append and count。通常用户不会期望重复使用它们,或者对最后的值感到满意。positionals(没有-flag)不能重复(除非允许nargs).

如何添加可选或一次参数?对于如何创建“不重复”论点有一些建议。一是创建自定义action class.

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

Python argparse 与 nargs 行为不正确 的相关文章

随机推荐

  • 如何设置图像在 javascript 或 html 中显示的计时器?

    目前我有以下代码 但它不适用于我的 facebook iframe 应用程序 function Timer document getElementById buybtn style visibility visible setTimeout
  • 转义 sed 搜索模式的路径[重复]

    这个问题在这里已经有答案了 可能的重复 sed 引号中的正斜杠 在我的 bash 脚本中 我有一个路径字符串 我应该在其中使用它sed图案 SRC PATH PWD sed s
  • 我可以使用 HttpBrowserCapability 对象在服务器端检测 IE 文档模式吗

    我可以使用 HttpBrowserCapability 对象找出浏览器版本和特定功能 但是有没有办法找到浏览器用于呈现的文档模式 相当于 JavaScript 属性document documentMode 可以通过以下方式更改模式开发者工
  • 使用 OpenCV 进行角度和尺度不变模板匹配

    函数将模板图像从 0 度旋转到 180 或最多 360 度 以搜索源图像中所有相关的匹配项 所有角度 即使具有不同的比例 该函数是用 OpenCV C 接口编写的 当我尝试将其移植到 openCV C 接口时 我遇到了很多错误 请有人帮我将
  • 他们说 React 受 XSS 保护是什么意思?

    我在 React 教程上读到了这篇文章 这是什么意思 反应是安全的 我们不会生成 HTML 字符串 因此 XSS 保护是默认设置 如果 React 是安全的 XSS 攻击如何发挥作用 这种安全性是如何实现的 ReactJS 的设计相当安全
  • 返回 Vec<&str> 时字符串的生命周期 [重复]

    这个问题在这里已经有答案了 简单代码 fn foo gt Vec lt static str gt let mut vec Vec new let mut string String new doing something with str
  • Spark 集群和 Cassandra 的 Titan 设置和配置

    aurelius 邮件列表以及 stackoverflow 上已经有几个关于配置 Titan 使其与 Spark 一起工作的具体问题的问题 但我认为缺少的是使用 Titan 和 Spark 的简单设置的高级描述 我正在寻找的是使用推荐设置的
  • 是否可以中断一个进程并对其进行检查点以便稍后恢复?

    假设您有一个应用程序 它消耗了所有的计算能力 现在你想做一些其他必要的工作 Linux 上有没有办法中断该应用程序并检查其状态 以便稍后可以从中断的状态恢复 我特别感兴趣的是一种可以在另一台机器上停止并重新启动应用程序的方法 这也可能吗 一
  • Axis2 WSDL2java 仅生成 2 个 java 类

    我正在使用 Axis2 开发网络服务 请参阅下面我的程序 public class Simple public String echo String rest return rest 部署到 Axis2 war 后 我生成了这个 wsdl
  • 如何在纯CSS中的div之前制作三角形?

    你好朋友我已经尝试了很多次但我没有成功请帮助我 我想要下面的图片像这样 现在我已经创建了这个 但没有创建这个 div 的右角现在任何人请帮助我 我的代码是 Css dashbord a display block line height 2
  • 正则表达式 _# 位于字符串末尾

    我正在使用正则表达式 LIKEOracle 10g 中的函数用于查找后缀为 的列中的值 如 1 2 等 我可以使用下面的查询在值的任何部分找到 但我可以仅返回末尾带有 的值吗 SELECT FROM Table WHERE REGEXP L
  • $inc 修饰符如何处理 mongodb 中的并发请求?

    The inc修饰符可用于增加字段 例如分析计数器 页面浏览量等 如果有并发请求 它如何工作 假设我有文件 views 1 如果有两个并发请求使用时会发生什么 inc 观看次数是 2 还是 3 这确实有点宽泛 但我可以提供大致的思路 截至
  • Perl 的 CGI.pm 可以处理 Firefox 的 表单字段吗?

    Firefox 3 6 引入了 常规 type file 输入元素上的多个属性 http hacks mozilla org 2009 12 multiple file input in firefox 3 6 我无法让 Perl 处理这些
  • 在 xcode Swift 中设置 Fitbit api

    我正在尝试从 dev fitbit com 设置 Fitbit api 第一部分是注册应用程序 我已经陷入这部分 例如 我不知道回调 url 必须填写什么 在使用 api 之前我从未这样做过 此外 访问类型或应用程序类型对我来说非常令人困惑
  • 如何使用 Jsoup 从 Google 获取#resultStats

    我正在尝试获取 Google 向我们展示的文章数量 This是谷歌搜索的jeb bush barack obama 它显示了我需要的数字 即10 200 000文章 我如何使用 Jsoup 及其任何组件来获取该数字 我试过 Document
  • 如何对字母数字 pandas 索引进行降序排序。

    我有一个 pandas 数据框 如下所示 df DataFrame id a132 a132 b5789 b5789 c1112 c1112 value 0 0 0 0 0 0 df df groupby id sum value id a
  • Android INSTALL_FAILED_UID_CHANGED

    我一直在使用 Nexus 4 在 Android 上进行调试 但是我最近在这里遇到了这个错误 对这个错误进行一些研究后 这似乎是应用程序未正确删除的问题 我正在调试的应用程序在我的其他 Android 设备以及模拟器上运行良好 此错误仅发生
  • 外部 PHP 文件中的 WordPress get_option

    我创建了一个插件 可以以编程方式将产品添加到 WooCommerce 该插件运行良好 但现在我需要创建一个每 5 分钟运行一次的 cron 作业来更新库存 我已经编写了所有脚本 但我需要在此 php 文件中包含对 get option 的调
  • HTML 表格内的 CSS 定位

    我觉得这应该是理所当然的 但显然我错过了一些东西 我在页面上使用 HTML 表格 并且需要绝对定位在表格内呈现的元素 以便当我们应用 DHTML 来显示它时它可以正确显示 我尝试绝对将其相对于表格行的底部定位 但浏览器 FF 和 IE 不会
  • Python argparse 与 nargs 行为不正确

    这是我的 argparse 示例 即sample py import argparse parser argparse ArgumentParser parser add argument p nargs help Stuff args p