Python boolen类型的Argparser
我正在尝试传递bool类型的参数,并在运行代码时运行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
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只是想与原始示例保持一致……是的,我本来想在问题中添加注释,但决定让它更接近你的正确答案。