如何解决Python argv“假,假”被识别为真
我使用以下行运行我的程序
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" integrity="sha512-bLT0Qm9VnAYZDflyKcBaQ2gg0hSYNQrJ8RilYldYQ1FxQYoCLtUjuuRuZo+fjqhx/qtq/1itJ0C2ejDxltZVFg==" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.2/jquery.validate.min.js" integrity="sha512-UdIMMlVx0heynClOIFSyOrPggomfhBKJE28LKl8yR3ghkgugPnG6iLfRfHwushZl1MOPSY6TsuBDGPK2X4zYKg==" crossorigin="anonymous"></script>
<script src="http://igorescobar.github.io/jQuery-Mask-Plugin/js/jquery.mask.min.js"></script>
function ValidateCreditCardNumber()
{
var ccNum = document.getElementById("creditcard").value;
var visaRegEx = /^(?:4[0-9]{12}(?:[0-9]{3})?)$/;
var mastercardRegEx = /^(?:5[1-5][0-9]{14})$/;
var amexpRegEx = /^(?:3[47][0-9]{13})$/;
var discovregEx = /^(?:6(?:011|5[0-9][0-9])[0-9]{12})$/;
var isValid = false;
if (visaRegEx.test(ccNum))
{
isValid = true;
} else if(mastercardRegEx.test(ccNum))
{
isValid = true;
} else if(amexpRegEx.test(ccNum))
{
isValid = true;
} else if(discovregEx.test(ccNum))
{
isValid = true;
}
if(isValid)
{
alert("Thank You!");
} else
{
alert("Please provide a valid Visa number!");
}
}
但我的程序将 python ***.py --if_normalize False
变量识别为 if_normalize
True
它打印 if_normalize is True
我通过了 'False,false,-1' 但它仍然识别为 def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--work-path",required=True,type=str)
parser.add_argument("--seed",default=42,type=int,help="Random seed")
parser.add_argument("--batch-size",default=128,type=int)
parser.add_argument("--attack",default='no',type=str)
parser.add_argument("--gpu",default=2,type=int)
parser.add_argument('--if_normalize',default=False,type=bool)
return parser.parse_args()
args = parse_args()
print(args)
解决方法
因为它只是通过 'TEST %%'
运行输入,而 bool
是 bool('False')
,因为任何非空字符串都是真实的。
您通常会使用标志来代替:
True
parser.add_argument('--if-normalize',action='store_true')
操作意味着默认为 store_true
,如果存在标志,则将其设置为 False
。 IE。你会像这样使用它:
True
,
您应该更改为以下内容:
parser.add_argument('--if_normalize',action='store_true')
当您在调用脚本时将其添加到命令行参数时,这会将参数 if_normalize
设置为 True
。
您可以参考 docs 并确切了解它的作用。
,https://docs.python.org/3/library/argparse.html#type
不推荐将 bool() 函数用作类型转换器。它所做的只是将空字符串转换为 False,将非空字符串转换为 True。这通常不是我们想要的。
最近扩展了此 type
部分以试图消除一些常见的误解,包括对 bool
(内置)函数的这种滥用。
您可以编写自己的函数来解析大量“是/否”字词。开发人员拒绝这样做,因为替代方案太多,尤其是在包含非英语可能性的情况下。
store_true
Action
足以满足大多数用途。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。