Python中的Windows版本检测不起作用

时间:2015-02-11 19:37:33

标签: python windows python-2.7 sys

我将组件构建到Python 2.7脚本中,该脚本确定脚本运行的Windows版本。我找到了一个很好的解决方案来自另一个Stack Overflow帖子的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

提前致谢!

1 个答案:

答案 0 :(得分:1)

虽然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!