1

我在大概是一个简单的 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

4

1 回答 1

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":
于 2013-07-19T07:20:15.753 回答