argparse:如果设置了标志,则忽略位置参数?

2023-12-04

我想为命令提供 3 个参数:<version>, <input file> and <output file>正常使用情况下。除非有一个特定的标志--init,这基本上将运行程序,而不需要任何输入和输出文件规范。

因此,我理想的情况是有一个命令,其用法是:

py program.py --init

OR

py program.py <version> <input file> <output file>

然而,由于位置参数始终是必需的(因为在除--init),似乎没有办法干净地获得这个语法,我能想到的就是将 3 个位置参数变成一个可选标志,如果可选标志不存在,则引发异常--init不被调用。这一切看起来都很丑陋。

到目前为止我的代码:

def get_args():
    parser = argparse.ArgumentParser(description="Tool for FOO-ing a BAR.")
    parser.add_argument(dest="version", help="The version.")
    parser.add_argument(dest="input", help="The input file.")
    parser.add_argument(dest="output", help="The output file.")

    parser.add_argument("-i", "--init", dest="init", action="store_true", help="Foo Init.")

    return parser.parse_args()

澄清:
要么全部 3 个参数 (<version> <input> <output>) 必须指定。
OR
该程序仅运行--init应指定 flag 和 0 参数。

程序不应接受指定的 0、1 或 2 个参数(没有--init flag).


您可以定义自己的操作类:

class init_action(argparse.Action):
    def __init__(self, option_strings, dest, **kwargs):
        return super().__init__(option_strings, dest, nargs=0, default=argparse.SUPPRESS, **kwargs)
    
    def __call__(self, parser, namespace, values, option_string, **kwargs):
        # Do whatever should be done here
        parser.exit()

def get_args():
    parser = argparse.ArgumentParser(description="Tool for FOO-ing a BAR.")
    parser.add_argument(dest="version", help="The version.")
    parser.add_argument(dest="input", help="The input file.")
    parser.add_argument(dest="output", help="The output file.")

    parser.add_argument("-i", "--init", action=init_action, help="Foo Init.")

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

argparse:如果设置了标志,则忽略位置参数? 的相关文章

  • 使用 Python 编辑 RTF 文件

    也许这是一个愚蠢的问题 但我不明白 所以道歉 我有一个 RTF 文档 我想更改它 例如 有一个表 我想复制一行并以面向对象的方式更改代码中第二行中的文本 我认为 pyparsing 应该是可行的方法 但我摆弄了几个小时但没有明白 我没有提供
  • 从字典的元素创建 Pandas 数据框

    我正在尝试从字典创建一个 pandas 数据框 字典设置为 nvalues y1 1 2 3 4 y2 5 6 7 8 y3 a b c d 我希望数据框仅包含 y1 and y2 到目前为止我可以使用 df pd DataFrame fr
  • 如何为未捕获的异常处理程序编写单元测试

    我有一个函数可以捕获uncaught例外情况 如下 有没有办法编写一个单元测试来执行uncaught exception handler 功能正常 但测试正常退出 import logging def config logger logge
  • 尝试从网页Python和BeautifulSoup获取编码

    我试图从网页检索字符集 这会一直改变 目前我使用 beautifulSoup 来解析页面 然后从标题中提取字符集 这工作正常 直到我遇到一个网站 到目前为止 我的代码以及与其他页面一起使用的代码是 def get encoding soup
  • 指示电子邮件的类型

    我有以下自动化程序 它将电子邮件发送给我自己 并添加了特定的链接 import win32com client as win32 import easygui import tkinter as to from tkinter import
  • 数据框 - 平均列

    我在 pandas 中有以下数据框 Column 1 Column 2 Column3 Column 4 2 2 2 4 1 2 2 3 我正在创建一个数据框 其中包含第 1 列和第 2 列 第 3 列和第 4 列等的平均值 ColumnA
  • OpenCV 跟踪器:模型未在函数 init 中初始化

    在视频的第一帧 我运行一个对象检测器 它返回对象的边界框 如下所示
  • 如何使用 opencv python 计算乐高积木上的孔数?

    我正在开发我的 python 项目 我需要计算每个乐高积木组件中有多少个孔 我将从输入 json 文件中获取有关需要计算哪个程序集的信息 如下所示 img 001 red 0 blue 2 white 1 grey 1 yellow 1 r
  • 如何在 Python 中的函数入口、内部和退出处进行日志记录

    我希望能够使用 Python 日志记录工具在我的代码中进行简单且一致的日志记录 我能够执行以下操作 我希望所有现有 未来的模块和函数都有 输入 和 完成 日志消息 我不想添加相同的代码片段来定义日志记录参数 如下所示don t want t
  • Python MySQL 操作错误:1045,“用户 root@'localhost' 的访问被拒绝

    我试图通过以下方式从我的 python 程序访问数据库 db mysql connect host localhost user Max passwd maxkim db TESTDB cursor db cursor 但是 我在第一行代码
  • PIL.Image.open和tf.image.decode_jpeg返回值的区别

    我使用 PIL Image open 和 tf image decode jpeg 将图像文件解析为数组 但发现PIL Image open 中的像素值与tf image decode jpeg不一样 为什么会出现这种情况 Thanks 代
  • NumPy 相当于 Keras 函数 utils.to_categorical

    我有一个使用 Keras 进行机器学习的 Python 脚本 我正在构建 X 和 Y 它们分别是特征和标签 标签的构建方式如下 def main depth 10 nclass 101 skip True output True video
  • App Engine 实体到字典

    将 google app engine 实体 在 python 中 复制到字典对象的好方法是什么 我正在使用 db Expando 对象 所有属性均为扩展属性 Thanks 有一个名为foo尝试 foo dict
  • 使用seaborn绘制简单线图

    我正在尝试使用seaborn python 绘制ROC曲线 对于 matplotlib 我只需使用该函数plot plt plot one minus specificity sensitivity bs where one minus s
  • 将字符串中的随机字符转换为大写

    我尝试随机附加文本字符串 这样就不只是有像这样的输出 gt gt gt david 我最终会得到类似的东西 gt gt gt DaViD gt gt gt dAviD 我现在的代码是这样的 import random import stri
  • 确定分割形状几何体的“左”侧和“右”侧

    我的问题是 我怎样才能确定哪一个Aside and Bside的侧面已经分割的旋转矩形几何体 http nbviewer jupyter org urls dl dropbox com s ll3mchnx0jwzjnf determine
  • 如何通过函数注释指示函数需要函数作为参数,或返回函数?

    您可以使用函数注释 http www python org dev peps pep 3107 在python 3中指示参数和返回值的类型 如下所示 def myfunction name str age int gt str return
  • 将时间添加到日期时间

    我有一个像这样的日期字符串 然后使用strptime 所以就像这样 my time datetime datetime strptime 07 05 15 m d Y 现在我想添加 23 小时 59 分钟my time 我努力了 timed
  • 如何在 scikit 中加载 CSV 数据并将其用于朴素贝叶斯分类

    尝试加载自定义数据以在 Scikit 中执行 NB 分类 需要帮助将示例数据加载到 Scikit 中 然后执行 NB 如何加载目标的分类值 使用相同的数据进行训练和测试 或使用完整的数据集进行测试 Sl No Member ID Membe
  • 如何使用xlwt设置文本颜色

    我无法找到有关如何设置文本颜色的文档 在 xlwt 中如何完成以下操作 style xlwt XFStyle bold font xlwt Font font bold True style font font background col

随机推荐

  • 循环遍历目录中的子目录

    我有一个目录 文件夹 该目录内有许多子目录 每个子目录内都有许多图像 我想循环遍历 文件夹 目录中的子目录 然后循环遍历每个目录中的所有图像以将图像导出到 Excel 并将每个子目录中的图像放在一个 Excel 工作表中 例如如果我有十个子
  • 从最小化窗口捕获图像

    正如标题所示 我想从最小化的窗口捕获图像 这可能吗 我用捕捉图像来自 MSDN 并且它可以工作 除非窗口被最小化 我尝试的一种解决方案是将其最大化 捕获图像 然后将其恢复到原始状态 唯一的问题是动画看起来很丑 我想找到替代方案 这是我尝试的
  • 在 Laravel 中将对象转换为数组[重复]

    这个问题在这里已经有答案了 我查询了这样的数据库 它给了我一个数组 foreach oid as orderid orderdetailData DB table order details gt join orders order det
  • 日期时间转换还是转换? [复制]

    这个问题在这里已经有答案了 选择什么 Cast or Convert对于日期时间 Microsoft SQL Server 我已经看过了MSDN 规范 乍一看 除了语法之外 似乎没有什么区别 CAST 的语法 CAST expression
  • 在 ASP.Net 中使用客户端证书进行数字签名

    我正在尝试使用私钥对信息进行数字签名 我知道如何在 Net 桌面客户端应用程序中执行此操作 但不确定如何在 ASP Net 中执行此操作 它将在使用 IE8 的 Intranet 上使用 如果是通过 ASP Net 完成的 我猜测当用户在访
  • VBA:通配符 * - 查找以数字结尾的文件 - 查找错误的文件

    我是Windows用户 如果我将条件设置为 1 jpg 那么它会列出一个以 2 结尾的文件 如果我将条件设置为 2 jpg 或 3 jpg 则效果很好 Sub prob Dim x As String x Dir C Users Envir
  • 在 SQL 数据库中存储纬度和经度数据时应使用什么数据类型? [复制]

    这个问题在这里已经有答案了 在符合 ANSI SQL 的数据库中存储纬度或经度数据时 哪种数据类型最合适 应该float被使用 或者decimal 或者 我知道 Oracle MySql 和 SQL Server 添加了一些专门用于处理地理
  • 有什么方法可以使用 C# 在 Windows 中关闭“互联网”吗?

    我正在寻找 C 中 API 的指针 这些指针将允许我通过打开和关闭连接来控制我的 Internet 连接 我想编写一个小控制台应用程序 它允许我打开和关闭访问权限 从而提高生产力 以及在此过程中学习一些东西 谢谢 如果您使用的是 Windo
  • 使用 setp 将长 y 标签包装在 matplotlib 紧凑布局中

    我一直在尝试在代码中包装长标签的文本 我尝试了之前建议的 textwrap 方法here 但我的代码通过使用从 csv 导入的数组定义 yticklabelspyplot setp 方法 我在用着tight layout 否则进行格式化 所
  • 如何在 MVC.NET 项目中使用 EmguCV

    我在 WinForm 中使用 Emgu 并且工作正常 现在我尝试使用 emguCV 创建一个 mvc net 项目 但不起作用 出现错误 Emgu CV CvInvoke 的类型初始值设定项引发异常 我尝试使用官方网站的解决方案emguCV
  • 将列文本旋转 60 度

    如何将 iReport 中的报表的列文本旋转 60 度 据我所知 iReport 工具本身不支持旋转文本 这让你几乎没有什么选择 正如我已经概述的那样 解决方案 1 使用图形编辑器手动创建文本已旋转的静态图像 例如Inkscape 将该图像
  • Java中String和StringBuffer有什么区别?

    Java中String和StringBuffer有什么区别 字符串有最大大小吗 String用于操作不可更改的字符串 只读且不可变 StringBuffer用于表示可以修改的字符 性能方面 StringBuffer执行串联时速度更快 这是因
  • 具有多个 ServerAlias 的 Apache2 动态虚拟主机

    我正在尝试设置动态虚拟主机 但遇到了一些麻烦 它不允许我设置多个 ServerAlias
  • 如何在 C# 中使用 WMI 查询从 UWF 获取注册表和文件排除项

    我想使用 WMI 从 UWF 中获取所有注册表排除和文件排除 我已经尝试从 UWF RegistryFilter 类调用 GetExclusions 方法 但没有成功 我期待着一个工作示例代码 提前感谢您的帮助 困难的部分是从方法结果中读取
  • 如何从R中的facet_grid图中获得真实比例?

    我正在尝试添加其中出现的标题post 因此 当我使用时 我需要绘图的真实比例 x 和 y 轴 facet grid 我知道我可以使用layer data 因为它保存了图中的所有内容 但是 它并不真正准确 因为当我尝试使用来建立限制时min
  • 高纬度非矩形投影不会出现 Cartopy 标签

    我根据此绘制了一张高纬度非矩形地图堆栈溢出问题 由于某种原因 即使我想在绘图的左 下轴上添加标签 我也没有得到任何 x 和 y 经度 纬度标签 这是我用来生成该图的代码 import numpy as np import cartopy i
  • 用 XOR 交换值 [重复]

    这个问题在这里已经有答案了 这两个宏有什么区别 define swap a b a b a b a b Or define swap a b a b b a b a b 我看到第二个宏here但不明白为什么它不像第一个那样写 有什么特殊原因
  • 由于 localhost:9000 在机器人框架中被命中,导致 500 内部服务器错误的原因是什么?

    每次我尝试向我的机器人发送消息时 或者在它连续响应 3 条消息后 都会出现此错误 I put a try catch围绕获得异常的代码 从调用context PostAsync 并将其记录到我的 Application Insights 实
  • Google 文档脚本每次都会请求许可

    所以我的问题是我有一个谷歌文档模板 其中有一个具有某些自动填充标准的脚本 单击 使用此模板 后 您会得到一个文件 当您每次运行该脚本时 都会要求获得访问谷歌需要识别您身份的某些内容的权限 它基本上就像一个新应用程序 每次您从模板 他们是否有
  • argparse:如果设置了标志,则忽略位置参数?

    我想为命令提供 3 个参数