Skip to main content
 首页 » 编程设计

Python argparse 如何从命令行传递 False

2025年05月04日10langtianya

我正在尝试弄清楚如何将 bool 值 False 从命令行传递给 argparser。我的原始代码如下:

import argparse 
parser = argparse.ArgumentParser(allow_abbrev=True) 
parser.add_argument('-data', default=True, type=bool, help='uses the history file') 
args = parser.parse_args(sys.argv[1:]) 

在命令行中,我输入:python myscript.py -data False

还有围绕 False 的单引号和双引号的变体。当我检查 args 命名空间的内容时,args.data 始终为 True。

所以我将参数定义从 bool 更改为 str,默认值为字符串“True”,如下所示:

parser.add_argument('-data', default="True", type=str, help='uses the history file') 

然后我添加了一些 args 的按摩以获得我真正想要的 bool 值:

if re.search("f", args.data, re.I): 
   args.data = False 
else: 
   args.data = True 

此解决方法确实有效。有更好的方法吗?

请您参考如下方法:

您可以使用store_false 或store_true 参数来add_argument(参见the argparse documentation)。例如,如果您希望默认值为 True,那么您可以使用 action='store_false' 添加一个参数:

parser.add_argument('--no-data', action='store_false', help="don't use the history file") 

如果您运行 python command.py --no-data 和 True,则 args.no_data 将为 False code> 如果你在没有 --no-data 参数的情况下运行 python command.py。