我正在努力想办法将命令行传递的布尔值 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')
然后我对参数进行了一些处理,以获得我真正想要的布尔值:
if re.search("f", args.data, re.I):
args.data = False
else:
args.data = True
这种解决方法是有效的。是否有更好的方法来实现这个目标?
bool
将任何非空字符串转换为 True。https://dev59.com/snRB5IYBdhLWcg3wHkPi - dashiellstore_true
参见:https://dev59.com/8Y_ea4cB1Zd3GeqPRaka - Patrick Haugh