我试图找出如何将布尔值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进行了一些按摩,以获得我真正想要的布尔值:
if re.search("f", args.data, re.I):
args.data = False
else:
args.data = True
此替代方法确实有效。有一个更好的方法吗?
炎炎设计
婷婷同学_
相关分类