【问题标题】:Windows version detection in Python not workingPython中的Windows版本检测不起作用
【发布时间】:2015-02-11 19:37:32
【问题描述】:

我正在将一个组件构建到一个 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

提前致谢!

【问题讨论】:

    标签: python windows python-2.7 sys


    【解决方案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!
    

    【讨论】:

    • 感谢您的快速回复。转换为字符串可以解决问题!感谢第二双眼睛!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 2021-08-03
    • 2012-03-29
    • 1970-01-01
    • 2022-09-23
    相关资源
    最近更新 更多