Python 为什么argparse不能正确解析我的布尔标志?
我试图使用argparse模块使Python程序接受灵活的命令行参数。我想传递一个简单的布尔标志,并说Python 为什么argparse不能正确解析我的布尔标志?,python,Python,我试图使用argparse模块使Python程序接受灵活的命令行参数。我想传递一个简单的布尔标志,并说True或False,以执行代码中的相应分支 考虑以下几点 import argparse parser = argparse.ArgumentParser(prog='test.py',formatter_class=argparse.ArgumentDefaultsHelpFormatter) parser.add_argument('-boolflag', type=bool, defa
True
或False
,以执行代码中的相应分支
考虑以下几点
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)
当我尝试使用python scrap.py-boolflag False-intflag 314执行它时,我得到了结果
Bool Flag is True
Int Flag is 314
这是为什么?!!intflag似乎被正确解析,但是布尔标志总是被解析为True
,即使我在命令行参数中明确提到希望它为False
我哪里做错了 您试图将字符串“False”
转换为布尔值:
>>> bool("False")
True
这将不起作用,因为字符串“False”
是非空值。所有非空字符串都有一个True
布尔值
请改为使用:
现在,当您使用该开关时,将存储False
,否则默认值为True
(由action='store\u False'
设置)
parser.add_argument('--disable-feature', dest='feature',
action='store_false')