Windows Python 中的版本检测不工作

Windows version detection in Python not working

我正在将一个组件构建到 Python 2.7 脚本中,用于确定脚本 运行 在哪个版本的 Windows 上。我从另一个 Stack Overflow post 找到了位于 here 的一个很好的解决方案,它看起来非常简单并且符合我的需要(显然,我使用了第二个答案)。不幸的是,它似乎不起作用。我在两个系统(Win7 32 位和 Win7 64 位)上试过这个脚本,它每次都输出我的 else 语句。

这是我的输出:

Loaded os_version_detection function!
Detecting family of Windows...
Detected OS: Unknown!
sys.getwindowsversion(major=6, minor=1, build=7601, platform=2, service_pack='Service Pack 1')

谁能指出我遗漏了什么。感觉修复应该很简单(缺少字符、缺少语句、打字错误等),但我似乎无法理解它。

这是我的代码:

def os_version_detection(started_by_function):
    global os_version
    global os_arch

    # Determine what family of Windows is installed.
    print("Loaded os_version_detection function!")
    print("Detecting family of Windows...")
    sys_info_raw = sys.getwindowsversion()
    if 'major=6, minor=2' in sys_info_raw:
        os_version = "Win8"
        print("Detected OS: Windows 8/2012!")

    elif 'major=6, minor=1' in sys_info_raw:
        os_version = "Win7"
        print("Detected OS: Windows 7/2008!")

    elif 'major=6, minor=0' in sys_info_raw:
        os_version = "WinVista"
        print("Detected OS: Windows Vista!")

    elif 'major=5, minor=2' in sys_info_raw:
        os_version = "Win2003"
        print("Detected OS: Windows 2003!")

    elif 'major=5, minor=1' in sys_info_raw:
        os_version = "WinXP"
        print("Detected OS: Windows XP!")

    else:
        os_version = "Unknown"
        print("Detected OS: Unknown!")
        print sys_info_raw

提前致谢!

虽然 sys_info_raw 在打印时看起来像一个字符串,但它的类型实际上是 <type 'sys.getwindowsversion'>,它显然不会像 str 类型那样对待 in 运算符。在执行检查之前尝试显式转换为字符串。

print("Loaded os_version_detection function!")
print("Detecting family of Windows...")
sys_info_raw = str(sys.getwindowsversion())

结果(在我的机器上):

Loaded os_version_detection function!
Detecting family of Windows...
Detected OS: Windows 7/2008!