2015-02-11 49 views
0

我正在將一個組件構建到一個Python 2.7腳本中,該腳本確定腳本在哪個版本的Windows上運行。我從另一個Stack Overflow文章中找到了一個位於here的好解決方案,該文章看起來非常簡單並且符合我的需求(顯然,我使用了第二個答案)。不幸的是,它似乎沒有工作。我已經在兩個系統(Win7 32位和Win7 64位)上試過這個腳本,每次都輸出我的else語句。Python中的Windows版本檢測不起作用

這裏是我的輸出:

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

雖然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! 
+0

感謝您的快速回復。轉換爲字符串固定了它!感謝第二雙眼睛! – 2015-02-11 20:03:35