【发布时间】:2018-11-29 22:58:32
【问题描述】:
我正在尝试整理如何将布尔值 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
此解决方法确实有效。有没有更好的方法来做到这一点?
【问题讨论】:
-
bool将任何非空字符串转换为 True stackoverflow.com/questions/715417/… -
你也可以使用
store_true查看:stackoverflow.com/questions/32884131/…
标签: python