Python if语句返回

Gre*_*reg 1 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()
Run Code Online (Sandbox Code Playgroud)

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

仅供参考我正在运行Python 2.6.5

Doo*_*nob 9

尝试:

if vmtype not in ("VHD", "VMDK"):
Run Code Online (Sandbox Code Playgroud)

您当前的代码解析为:

if (vmtype is not ("VHD")) or ("VMDK"):
Run Code Online (Sandbox Code Playgroud)

这显然是错的.既然("VMDK")是一个真正的价值,那么整个陈述总是正确的.因此,if语句将始终执行.


请注意,即使你尝试过

if vmtype is not "VHD":
Run Code Online (Sandbox Code Playgroud)

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

if vmtype != "VHD":
Run Code Online (Sandbox Code Playgroud)