无法使用 argparse 解析布尔值
Cannot parse boolean values with argparse
我尝试过但没有奏效的事情:
parser.add_argument('--download',type=bool,default=False)
parser.add_argument('--download',default=False,action='store_true')
parser.add_argument('--download',action='store_true')
对于情况 1,传递 False
也被解释为 True
。
对于案例 2 和案例 3,我收到错误
main.py: error: unrecognized arguments: False
Python 版本:3.8
为什么 argparse
不适用于布尔参数?
'store_true' 的工作方式是,如果您将 --download
作为参数,则值为真;如果你省略它,它就是错误的。
type=bool
无法如您所愿地工作的原因是传递给 bool
函数的任何非空字符串都将返回 True。 (如果你愿意,你可以编写一个函数,如果字符串为“True”则为 returns True,如果字符串为“False”则为 False,并将其用于 type
,但这不是典型的use-case.)
我尝试过但没有奏效的事情:
parser.add_argument('--download',type=bool,default=False)
parser.add_argument('--download',default=False,action='store_true')
parser.add_argument('--download',action='store_true')
对于情况 1,传递 False
也被解释为 True
。
对于案例 2 和案例 3,我收到错误
main.py: error: unrecognized arguments: False
Python 版本:3.8
为什么 argparse
不适用于布尔参数?
'store_true' 的工作方式是,如果您将 --download
作为参数,则值为真;如果你省略它,它就是错误的。
type=bool
无法如您所愿地工作的原因是传递给 bool
函数的任何非空字符串都将返回 True。 (如果你愿意,你可以编写一个函数,如果字符串为“True”则为 returns True,如果字符串为“False”则为 False,并将其用于 type
,但这不是典型的use-case.)