Python if语句返回

时间:2013-07-19 07:18:58

标签: python if-statement

我遇到的问题可能是一个简单的if语句。我试图通过VM文件格式的类型来使用。即使我放了VMDK或VHD,它仍会返回,VMDK是无效类型或VHD是无效类型。

import sys
vmtype = sys.argv[3]
vmtype = str(vmtype).strip().upper()
## File format check
if vmtype is not ("VHD") or ("VMDK"):
    print vmtype + " is an invalid type"
    sys.exit()

我已尝试使用!=的if语句,而不是将参数放在括号中。我已经在网上搜索了一段时间,并尝试了我发现的内容,但仍然遇到了同样的问题。

仅供参考我正在运行Python 2.6.5

1 个答案:

答案 0 :(得分:9)

尝试:

if vmtype not in ("VHD", "VMDK"):

您当前的代码解析为:

if (vmtype is not ("VHD")) or ("VMDK"):

这显然是错误的。由于("VMDK")是一个真值,整个陈述总是正确的。因此,if语句将始终执行。


请注意即使您尝试了

if vmtype is not "VHD":

它不起作用,因为is测试身份,而不是值。你会用:

if vmtype != "VHD":