在 Python 的 argparse 中多次使用相同的选项

2024-04-07

我正在尝试编写一个接受多个输入源并对每个输入源执行某些操作的脚本。像这样的东西

./my_script.py \
    -i input1_url input1_name input1_other_var \
    -i input2_url input2_name input2_other_var \
    -i input3_url input3_name
# notice inputX_other_var is optional

但我不太清楚如何使用argparse。似乎它被设置为每个选项标志只能使用一次。我知道如何将多个参数与一个选项相关联(nargs='*' or nargs='+'),但这仍然不允许我使用-i标记多次。我该如何实现这一目标?

需要明确的是,我最终想要的是一个字符串列表的列表。所以

[["input1_url", "input1_name", "input1_other"],
 ["input2_url", "input2_name", "input2_other"],
 ["input3_url", "input3_name"]]

这是一个解析器,它处理重复的 2 个可选参数 - 名称在metavar:

parser=argparse.ArgumentParser()
parser.add_argument('-i','--input',action='append',nargs=2,
    metavar=('url','name'),help='help:')

In [295]: parser.print_help()
usage: ipython2.7 [-h] [-i url name]

optional arguments:
  -h, --help            show this help message and exit
  -i url name, --input url name
                        help:

In [296]: parser.parse_args('-i one two -i three four'.split())
Out[296]: Namespace(input=[['one', 'two'], ['three', 'four']])

这不处理2 or 3 argument案例(尽管我前段时间为Python错误/问题编写了一个补丁来处理这样的范围)。

单独的参数定义如何nargs=3 and metavar=('url','name','other')?

元组metavar也可以与nargs='+' and nargs='*'; 2 个字符串用作[-u A [B ...]] or [-u [A [B ...]]].

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

在 Python 的 argparse 中多次使用相同的选项 的相关文章

随机推荐

  • Laravel5 ORM:如何在同一相关对象上为多个 withCount 别名

    我有一个Hotel模型有很多Rooms那可以是occupied 我应该如何查询这个 酒店列表 房间数 已占用房间数 查询 hotels Hotel where foo bar gt withCount rooms gt withCount
  • Windows 10 中 ~/.git-credentials 文件的位置?

    我搜索但找不到路径 git credentials在我的 Windows 10 机器上 git 文档 https git scm com docs git credential store说它以纯文本形式存储用户名和密码 git crede
  • Spring集成中运行时可配置的动态路由

    我想构建一个具有多个出站网关的方案 可以在运行时添加这些网关 假设它以 2 个网关开始 但能够在运行时添加第 3 4 个网关 我想要 http outbound gateways 来实现它们的功能 但想在运行时构建它们的实例 问题在于在 s
  • 使用指针编写 strcat() 时出错

    我正在尝试学习CThe C programming Language by K R 我正在尝试写一个strcat 使用指针的程序 char strcat char s char t char d d s while s s while s
  • Pandas 将列从一个数据框复制到另一个具有不同名称的数据框

    我必须从一个 DataFrame 复制列A到另一个数据框B 中的列名称A and B不匹配 最好的方法是什么 像这样的专栏有好几个 我需要为每一列写类似的内容吗B SO A Sales Order etc 我会用pd concat http
  • 蓝牙广播

    我想使用蓝牙将数据从一台设备广播到附近的众多设备 现在 我知道蓝牙广播的存在 但是可以使用 Android 现有的 API 吗 如果没有 是否有其他可用的第三方 API 有能力实现这一点 关于蓝牙广播的另一个问题 您是否可以开始收听正在进行
  • 基于路径的遮罩具有良好的抗锯齿功能

    我想用圆圈掩盖一个正方形 我使用它而不是圆角半径 因为我想稍后对动画进行处理 我可以将其遮盖 但边缘非常粗糙 Target View let targetView UIView frame CGRect x 0 y 0 width 100
  • SharePoint REST 在单个 REST 查询中获取用户标题

    我有一个包含 人员和组 列的列表 当我使用 REST 查询行时 我得到此列中列出的用户 ID 我发现这篇文章将帮助我将每个 id 转换为标题 http www codeproject com Articles 692289 How to G
  • 将 pandas 中的数字格式化为以千或百万为单位的货币

    我有一个数据框 pd DataFrame Amount 19000000 9873200 823449242 我需要将数字转换为以百万计的货币 即 19 00MM 9 88MM 和 823 45MM 有谁知道一个快速的方法来做到这一点 Th
  • 如何根据子列表的长度对列表列表进行排序[重复]

    这个问题在这里已经有答案了 我有以下清单 a a b c d e f g h i j k l m n o 我想根据子列表的长度对列表进行排序 结果应该是这样的 a o d e m n a b c f g h i j k l Use key参
  • 从 SQL Server 检查后台进程

    我有一个后台进程正在运行 它在运行时可以在任务管理器中看到 我需要从我的数据库检查该进程是否正在运行 我尝试过以下查询 select from sys dm os threads select FROM sys dm os tasks 但它
  • 为什么切换到 jQuery 3 后我的“load”事件/函数没有被执行?

    自从我升级到jQuery 1 x jQuery 2 x to jQuery 3 x 我现有的代码将不再正确执行 一切正常 但load事件侦听器不再被触发或只是有时被触发 function window on load function th
  • 使用 Vue 为锚标记中的 href 赋值

    听起来很愚蠢 但我找不到传递 href 中定义的变量数据的方法 组件文件 vue 我尝试了所有这些 a href url a a href url a a href url a a url a a url a export default
  • Android - 两句话,两种样式,一个TextView

    我正在尝试显示一个包含两个句子的 TextView 我希望它们是一个接一个的 如下所示 AAAAAA BBBBBBBBBBBBBBBBBBBBBBB BBBBBBBBB 其中 A 是句子的第一个单词 部分 B 是第二个句子 A 和 B 的大
  • 禁止 python markdown 在

    中换行文本

    我正在使用Pythonmarkdown https python markdown github io 作为 Jinja2 生成 html 的过滤器 作为其中的一部分 我从渲染输入中填充表条目 通过 markdown 过滤器传递输入总是将文
  • PHP - 替换所有支持的语言的所有非字母数字字符

    嗨 我实际上正在尝试替换字符串中的所有非字母数字字符 如下所示 mb ereg replace a z0 9 s i string 第一个问题是它不会替换像这样的字符 从字符串中 其次 我想为此方法添加对所有用户语言的多位支持 我怎样才能做
  • 如何使用 Qt“在 Finder 中显示”或“在资源管理器中显示”

    是否可以在 Windows 资源管理器 OS X Finder 中打开一个文件夹 然后选择 突出显示该文件夹中的一个文件 并以跨平台方式执行此操作 现在 我做类似的事情 QDesktopServices openUrl QUrl fromL
  • 如何以 jquery ui 风格创建标准组合框(选择)?

    There is http jqueryui com demos autocomplete combobox启用自动完成功能的组合框 如何以相同的样式创建组合框但没有自动完成功能 只有几个固定值 如果我理解正确 您不想允许用户输入 并且应通
  • Spring 3.0如何做后台计算?

    在春季应用程序中 我想做一些后台计算 任务是我保存一个实体 比如说 GPS 坐标 然后我想查询 Web 服务以获取所有坐标之间的距离并将它们存储在数据库中以供以后使用 存储实体后 有可能无法连接到将用于计算距离的 Web 服务 我认为这可以
  • 在 Python 的 argparse 中多次使用相同的选项

    我正在尝试编写一个接受多个输入源并对每个输入源执行某些操作的脚本 像这样的东西 my script py i input1 url input1 name input1 other var i input2 url input2 name