2008-10-13 9 views
24

पाइथन और pywin32 या wxPython का उपयोग करके, सबसे आसान संभव तरीके से, विंडोज एक्सपी और विंडोज विस्टा के बीच अंतर कैसे करें?कैसे जांचें कि ओएस विस्टा पाइथन में है या नहीं?

>>> isWindowsVista() 
True 
+0

ध्यान दें कि अगर आप केवल रुचि खिड़कियों linux बनाम हैं आदि आप 'उपयोग कर सकते हैं अगर os.name == "nt": ' –

उत्तर

40

पायथन में आपकी मदद करने के लिए प्यारा 'मंच' मॉड्यूल है।

>>> import platform 
>>> platform.win32_ver() 
('XP', '5.1.2600', 'SP2', 'Multiprocessor Free') 
>>> platform.system() 
'Windows' 
>>> platform.version() 
'5.1.2600' 
>>> platform.release() 
'XP' 

नोट: के रूप में टिप्पणी में उल्लेख उचित मूल्यों जब अजगर के पुराने संस्करणों का उपयोग कर वापस नहीं किया जा सकता है।

+1

पायथन 2.5.2 कहते हैं ('', '', '', '') Vista में platform.win32_ver(), लेकिन पायथन 2.6 ठीक से 'Vista' का जवाब देता है। धन्यवाद! – DzinX

+0

सर्वोत्तम और स्पष्ट। कृपया ध्यान दें कि Win7 जारी होने के बाद से आपका प्रोग्राम आज काम नहीं कर सकता है और यह भी 6.1 –

+0

है जैसा कि अहमेट ने इंगित किया है, यदि आप विंडोज 7 पर पाइथन के पुराने संस्करण चलाते हैं तो यह काम नहीं करेगा। पायथन 2.5.4 विंडोज 7 पर निम्नलिखित देता है: ' platform.release() => 'Vista', 'platform.win32_ver() => ('', '6.1.7600', '', 'मल्टीप्रोसेसर फ्री')'। आश्चर्य की बात नहीं है कि 2.5 पुराना है, लेकिन कुछ पता होना चाहिए। – sam

8

सरल समाधान मैंने पाया यह एक है:

अनिवार्य रूप से, मैं एक समारोह है कि यह सच है वापस आ जाएगी iff वर्तमान ओएस विस्टा है कहा जाता है की जरूरत है

import sys 

def isWindowsVista(): 
    '''Return True iff current OS is Windows Vista.''' 
    if sys.platform != "win32": 
     return False 
    import win32api 
    VER_NT_WORKSTATION = 1 
    version = win32api.GetVersionEx(1) 
    if not version or len(version) < 9: 
     return False 
    return ((version[0] == 6) and 
      (version[1] == 0) and 
      (version[8] == VER_NT_WORKSTATION)) 
+0

Win32api में सभी कार्यों के साथ, इसे सीधे घोड़े के मुंह से प्राप्त करें - http://msdn.microsoft.com/en-us/library/ms724833(VS.85)। एएसपीएक्स लौटा हुआ टपल लगभग OSVERSIONSINFOEX –

+2

के क्षेत्रों में मानचित्र करता है यह भी गलत है। यह विंडोज 7 के लिए सच होगा और संभवतः जो कुछ भी विंडोज 7 के बाद आता है। Vista में संस्करण 6.0 है, विंडोज 7 में संस्करण 6.1 है। वास्तव में लोग, यह सही नहीं है! –

+0

@ डेविड हेफरनन: पोस्ट के टाइमस्टैम्प की जांच करें, यह विंडोज 7 के बाहर आने से पहले था :) लेकिन इसे इंगित करने के लिए धन्यवाद। मैंने मामूली संस्करण संख्या की जांच करने के लिए कोड अपडेट किया, मुझे लगता है कि यह इस बार पर्याप्त होना चाहिए। – DzinX

8

मुड़ में इस्तेमाल किया समाधान है, जिसकी आवश्यकता नहीं है pywin32:

def isVista(): 
    if getattr(sys, "getwindowsversion", None) is not None: 
     return sys.getwindowsversion()[0] == 6 
    else: 
     return False 

ध्यान दें कि यह विंडोज सर्वर 2008 से भी मेल खाता है

+0

धन्यवाद! मुझे pywin32 या wxPython का उपयोग करने में कोई फर्क नहीं पड़ता (मैंने उन्हें वैसे भी आयात किया है), लेकिन मैं यह सुनिश्चित करना चाहता हूं कि ओएस विस्टा है। मुझे सर्वर 2008 के बारे में बहुत कुछ नहीं पता है, इसलिए मैं नहीं चाहता कि मेरा Vista- विशिष्ट कोड इस पर चलें। – DzinX

+2

मुझे अप-वोट समझ में नहीं आता है। विंडोज 7 में 6 के बराबर बड़ा संस्करण भी है। यदि इरादा का मतलब है विस्टाऑरलेटर तो कोड को> = 6. कहना चाहिए, इसलिए, हालांकि आप इसे समझते हैं, यह गलत है। –

+0

@ डेविड हेफरनन यह उत्तर विंडोज 7 जारी होने से एक साल पहले दिया गया था। –

0
import platform 
if platform.release() == "Vista": 
    # Do something. 

या

import platform 
if "Vista" in platform.release(): 
    # Do something.