在 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 中多次使用相同的选项 的相关文章

  • 通过 Scrapy 抓取 Google Analytics

    我一直在尝试使用 Scrapy 从 Google Analytics 获取一些数据 尽管我是一个完全的 Python 新手 但我已经取得了一些进展 我现在可以通过 Scrapy 登录 Google Analytics 但我需要发出 AJAX
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • Python 的键盘中断不会中止 Rust 函数 (PyO3)

    我有一个使用 PyO3 用 Rust 编写的 Python 库 它涉及一些昂贵的计算 单个函数调用最多需要 10 分钟 从 Python 调用时如何中止执行 Ctrl C 好像只有执行结束后才会处理 所以本质上没什么用 最小可重现示例 Ca
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Python(Selenium):如何通过登录重定向/组织登录登录网站

    我不是专业程序员 所以请原谅任何愚蠢的错误 我正在做一些研究 我正在尝试使用 Selenium 登录数据库来搜索大约 1000 个术语 我有两个问题 1 重定向到组织登录页面后如何使用 Selenium 登录 2 如何检索数据库 在我解决
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 如何使用 Ansible playbook 中的 service_facts 模块检查服务是否存在且未安装在服务器中?

    我用过service facts检查服务是否正在运行并启用 在某些服务器中 未安装特定的软件包 现在 我如何知道这个特定的软件包没有安装在该特定的服务器上service facts module 在 Ansible 剧本中 它显示以下错误
  • 使用 Tkinter 显示 numpy 数组中的图像

    我对 Python 缺乏经验 第一次使用 Tkinter 制作一个 UI 显示我的数字分类程序与 mnist 数据集的结果 当图像来自 numpy 数组而不是我的 PC 上的文件路径时 我有一个关于在 Tkinter 中显示图像的问题 我为
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 将图像分割成多个网格

    我使用下面的代码将图像分割成网格的 20 个相等的部分 import cv2 im cv2 imread apple jpg im cv2 resize im 1000 500 imgwidth im shape 0 imgheight i
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Python 类继承 - 诡异的动作

    我观察到类继承有一个奇怪的效果 对于我正在处理的项目 我正在创建一个类来充当另一个模块的类的包装器 我正在使用第 3 方 aeidon 模块 用于操作字幕文件 但问题可能不太具体 以下是您通常如何使用该模块 project aeidon P
  • 如何将输入读取为数字?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 Why are x and y下面的代码中使用字符串而不是整数 注意 在Python 2

随机推荐

  • 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