Python boolen类型的Argparser

Python boolen类型的Argparser,python,python-3.x,argparse,Python,Python 3.x,Argparse,我正在尝试传递bool类型的参数,并在运行代码时运行python main.py--tcpip=False。这对我不起作用 我试着把它改成str类型,效果非常好 import argparse parser = argparse.ArgumentParser(description="SSD and Gender Detection") parser.add_argument("--tcpip",default = "True",type=str,help='transfer data via

我正在尝试传递bool类型的参数,并在运行代码时运行
python main.py--tcpip=False
。这对我不起作用

我试着把它改成
str
类型,效果非常好

import argparse
parser = argparse.ArgumentParser(description="SSD and Gender Detection")
parser.add_argument("--tcpip",default = "True",type=str,help='transfer data via tcp/ip')
args = parser.parse_args()
print(args.tcpip)

if __name__ == '__main__':

    if(args.tcpip == "True"):
        send_data(count)
它打印
True
,即使我用
python main.py--tcpip=False
您应该使用
操作
参数:

parser.add_参数(“--tcpip”,action='store_false',help='transfer data via tcp/ip')
现在,
tcpip
的值默认为True,当使用参数
--tcpip
运行时,该值将更改为False

>>python main.py
真的
>>>python main.py--tcpip
假的
然后,您可以将条件更改为:

如果args.tcpip:
发送数据(计数)

更多阅读-

“True”
的类型为
str
True
具有类型
bool
。仅仅因为一个带引号的字符串恰好由单词T-r-u-e组成,它不会突然导致类型从
str
变为
bool
。是的,这种情况确实不直观
type=bool
失败,因为:
bool(“False”)
产生
True
。唯一产生
False
的字符串是空字符串,
”。你的
==“True”
是正确的测试。另外,像
--no transfer
这样的名字会更有意义。完全同意@chepner只是想与原始示例保持一致……是的,我本来想在问题中添加注释,但决定让它更接近你的正确答案。