我在可能是简单的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测试身份,而不是价值。您将使用:

if vmtype != "VHD":

10-04 15:07