我在处理可能是简单的 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
请您参考如下方法:
尝试:
if vmtype not in ("VHD", "VMDK"):
您当前的代码解析为:
if (vmtype is not ("VHD")) or ("VMDK"):
这显然是错误的。由于 ("VMDK") 是真值,因此整个语句始终为真。因此 if 语句将始终执行。
请注意,即使您尝试过
if vmtype is not "VHD":
这是行不通的,因为 is 测试的是身份,而不是值(value)。你会使用:
if vmtype != "VHD":
