当前位置: 首页 > 知识库问答 >
问题:

为什么argparse不能正确解析我的布尔标志?[副本]

陶健
2023-03-14

我正在尝试使用argparse模块使我的Python程序接受灵活的命令行参数。我想传递一个简单的布尔标志,并说truefalse来执行代码中的相应分支。

请考虑以下内容。

import argparse

parser = argparse.ArgumentParser(prog='test.py',formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument('-boolflag', type=bool, default=True)
parser.add_argument('-intflag' , type=int, default=3)
args = parser.parse_args()

boolflag = args.boolflag
intflag  = args.intflag


print ("Bool Flag is ", boolflag)
print ("Int Flag is ",  intflag)
Bool Flag is  True
Int Flag is  314

这是为什么?!!intflag似乎解析正确,但布尔标志总是解析为true,即使我在命令行参数中明确提到我希望它是false

我哪里错了?

共有1个答案

姜淇
2023-03-14

您正在尝试将字符串“false”转换为布尔值:

>>> bool("False")
True

这是行不通的,因为字符串“false”是非空值。所有非空字符串都有一个true布尔值。

改用store_false操作:

parser.add_argument('--disable-feature', dest='feature', 
                    action='store_false')

现在,当您使用该开关时,将存储false,否则默认值为true(由action='store_false'设置)。

 类似资料:
  • 问题内容: 我想使用argparse解析布尔命令行参数,写为“ –foo True”或“ –foo False”。例如: 但是,以下测试代码无法满足我的要求: 可悲的是,计算结果为。即使我更改为,情况也是如此,这令人惊讶,因为评估为。 如何获取argparse进行解析,以及它们的小写字母形式是什么? 问题答案: 另一个解决方案使用了先前的建议,但存在来自以下情况的“正确”解析错误: 这对于使用默认

  • 为什么我无法解析符号“r”..??。当我在这个.class文件上创建新活动时,我会遇到一个问题,为什么我不知道在创建类之后我什么也没做。(在R.Layout.Dashboard中)。(“红色R”)。 请帮帮我.

  • 问题内容: 我想使用argparse解析布尔命令行参数,写为。例如: 但是,以下测试代码不能满足我的要求: 可悲的是,计算结果为True。即使我更改为,情况也是如此,这令人惊讶,因为评估为。 如何获取进行解析,以及它们的小写字母形式是什么? 问题答案: 另一个解决方案使用了先前的建议,但存在来自以下情况的“正确”解析错误: 这对于使用默认值进行切换非常有用。例如 允许我使用:

  • 但是,正确的数据条目在被调用时会打印出来。我试着在网上寻找我应该做什么的答案,但我找不到任何实际可行的东西。我刚刚开始学习Java,所以可能有一个非常简单的答案,我只是忽略了。如果有人有什么想法,我将不胜感激。

  • 我通过使用map函数迭代来显示我的状态,这是一个数组。此外,我有一个按钮,在点击反转数组。 我认为我想做什么是相当明显的。但这对我不起作用,我不知道为什么。我必须单击两次来完成第一次还原,出现了奇怪的情况,即呈现的数组和Chrome中React开发工具在组件状态中显示的数组不匹配。 我无法解释这种行为。我开始认为这与我从道具中获得阵列有关,但我真的不知道。有什么想法吗?

  • 我有字符串格式的日期,我想解析成使用日期。 我将其解析为: 但奇怪的是,如果我通过"03-08-201309hjhkjhk"或"03-88-2013"或43-88-201378",它不会抛出错误,它会解析它。 现在,我必须编写正则表达式模式来检查日期的输入是否正确。但为什么会这样呢?? 代码: