有没有办法在 python 的 argparse 中创建参数,如果没有给出值则返回 true

2023-11-30

现在--resize我创建的标志是布尔值,意味着我的所有对象都将调整大小:

parser.add_argument("--resize", action="store_true", help="Do dictionary resize")

# ...

# if resize flag is true I'm re-sizing all objects
if args.resize:
    for object in my_obects:
        object.do_resize()

有没有办法实现 argparse 参数,如果作为布尔标志传递(--resize) 将返回 true,但如果传递值 (--resize 10),将包含值。

Example:

  1. python ./my_script.py --resize # Will contain True that means, resize all the objects
  2. python ./my_script.py --resize <index> # Will contain index, that means resize only specific object

为了有选择地接受一个值,您需要设置nargs to '?'。如果指定的话,这将使参数消耗一个值。如果指定了参数但没有值,则该参数将被分配给该参数的constvalue,所以这也是您需要指定的:

parser = argparse.ArgumentParser()
parser.add_argument('--resize', nargs='?', const=True)

现在这个说法有三种情况:

  1. 未指定:参数将得到它的默认值 (None默认情况下):

    >>> parser.parse_args(''.split())
    Namespace(resize=None)
    
  2. 不指定值:参数将获得其 const 值:

    >>> parser.parse_args('--resize'.split())
    Namespace(resize=True)
    
  3. 指定一个值:该参数将获得指定的值:

    >>> parser.parse_args('--resize 123'.split())
    Namespace(resize='123')
    

由于您正在寻找索引,因此您还可以指定type=int这样参数值将被自动解析为整数。这不会影响默认或常量情况,所以你仍然得到None or True在这些情况下:

>>> parser = argparse.ArgumentParser()
>>> parser.add_argument('--resize', nargs='?', type=int, const=True)
>>> parser.parse_args('--resize 123'.split())
Namespace(resize=123)

您的用法将如下所示:

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

有没有办法在 python 的 argparse 中创建参数,如果没有给出值则返回 true 的相关文章

随机推荐

  • Android 应用 future.usb.usbmanager

    我在购买的新 Android 平板电脑上运行应用程序时遇到一些问题 它可以在我之前的 Android 手机上运行 这是我的 logcat 输出 03 23 16 13 12 250 E AndroidRuntime 12284 FATAL
  • 如何在 C# 中使用 axWindowsMediaPlayer 跳转 X 秒

    我正在使用 axWindowsMediaPlayer 并且已加载视频 但我想跳 X 秒 例如 如果当前时间是视频的 1 分钟 我想跳到 1 分 10 秒 好吧 我找到了我的解决方案 我实际上运行正确 但我没有考虑加载视频所需的时间 具体来说
  • Firestore 对无效写入的计费[重复]

    这个问题在这里已经有答案了 我试图找出 firebase 如何对写入操作进行计费 在账单文档中 我找不到何时计算写入的明确定义 假设我运行一个set查询与原始文档完全相同的数据 这样文档就不会受到影响 这会按写操作计费吗 当我打开控制台运行
  • 将根上下文更改为 tomcat 6 中的其他文件夹

    我想更改已部署的 Web 应用程序的上下文 目前是通过url访问www app mysite com dashboard 但我想把它改成www app mysite com application dashboard 我通过帖子更改了根上下
  • 使用 select2 插件 (v4) 防止重新加载数据

    我在用着select2插件 v4 并使用ajax加载他的选项 如果我第一次打开选择输入 数据将被加载 当我再次打开选择时 会重新加载相同的数据 有什么办法可以防止这种数据 重新加载 我的意思是 如果我只是打开 select2 并且选项之前已
  • Android L(5.0)不会在 eclipse 中搜索“armeabi”或“armeabi-v7a”文件夹中的本机库(UnsatisfiedLinkError)

    我的应用程序使用 2 个本机库 我们称它们为 LibA so 和 LibB so 以前 我的应用程序在 kitkat 操作系统以下运行 没有任何问题 现在 使用 OS 5 0 lollipop 的 Nexus 5 出现 Unsatisfie
  • SQL Server:事务是否锁定其他用户的表?

    当我运行多个查询时 事务是否会锁定我的表 示例 如果另一个用户尝试在我使用事务的同时发送数据 会发生什么 另外 我怎样才能避免这种情况 同时还要确保所有数据已成功插入数据库 Begin Tran Insert into Customers
  • 检查一列中的值是否在另一列的列表中

    我有一个像这样的熊猫数据框 我需要知道是否city出现在列表中citylist 忽略大小写 我尝试过使用apply像这样 但无法找出正确的语法 df apply lambda x x city lower in x citylist 传递参
  • C++ 运算符重载示例

    好吧 我是运算符重载的新手 我发现了这个问题 我不想记录自己 而是更愿意问你 D 关键是 我知道如何进行简单的运算符重载 但我面临着堆栈运算符的问题 我将尝试举一个相对简单的例子 struct dxfdat int a string b h
  • 如何编辑txt文件中间的一行而不覆盖所有内容?

    我编写了一个 python 脚本 它从 txt 文件读取并执行基本任务 例如添加新行 删除和编辑现有行 为了删除和编辑 我使用 readlines 将整个文件作为列表加载 然后使用编辑的列表覆盖文件 这会增加数据丢失的可能性 所以我的问题是
  • 使用 Angular 2 创建 SOAP 客户端 [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我正在寻找一种使用 WSDL 向 Web 服务发送 SOAP 请求的方法 使用 Typescript 2 和 Angular 2 可以做到这一点吗 我看过 Angular 1 的
  • CakePHP Auth 组件重定向问题

    我无法让 Auth 组件在 CakePHP 1 2 6 应用程序中执行我想要的重定向 我有一个出现在所有页面上的登录表单 我想让用户保留在他登录的页面上 例如 如果他正在查看另一个用户的个人资料 我想让他在登录后保留在那里 而不是将他重定向
  • 从数据框中的列中提取字典值

    我正在寻找一种优化我的代码的方法 我有这种形式的条目数据 import pandas as pn a Feature1 aa1 Feature2 bb1 Feature3 cc2 Feature1 aa2 Feature2 bb2 Feat
  • Java Scanner“未分配的可关闭值”永远不会关闭[Eclipse]

    每当我将扫描仪输入为 嵌套行 时 它都会警告我 资源泄漏 未分配的可关闭值 永远不会关闭 并建议我添加 SuppressWarnings resource 在它的顶部 是不是只添加 SuppressWarnings resource 正如它
  • 是否可以通过反射获取局部变量? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我有一个至少有 50 个局部变量的方法 我需要从字符串值中选择一个变量 是否可以使用 C
  • MVC 4 Google 字体 - 内联网

    我有一个 MVC4 4 Bootstrap 项目 它可以通过 Visual Studio 2010 在本地完美呈现 但是当我发布到用于 Intranet 的内部 IIS 时 我无法访问该资源http fonts googleapis com
  • MongoDB - 使用 $set 更新子文档

    我有这个文件 data AP1IUY9Bfp me something somevalue 我有这个对象 webpage stackoverflow 我如何 push set 这个字段到 document me 中 这样最终结果将等于 da
  • 插入符号:结合 createResample 和 groupKFold

    我想做一个自定义采样caret 我的规格如下 我每天有 1 个观察 我的分组因素是月份 12 个值 因此 在第一步中 我创建了 12 个重新样本 其中 11 个月用于训练 11 30 点 1 个用于测试 30 点 这样我总共得到了 12 次
  • 无法安装 wikidata-query-rdf / Blazegraph

    我正在尝试安装 wikidata query rdf https github com wikimedia wikidata query rdf 并且 Blazegraph 出现故障 git clone https gerrit wikim
  • 有没有办法在 python 的 argparse 中创建参数,如果没有给出值则返回 true

    现在 resize我创建的标志是布尔值 意味着我的所有对象都将调整大小 parser add argument resize action store true help Do dictionary resize if resize fla