पाइथन और pywin32 या wxPython का उपयोग करके, सबसे आसान संभव तरीके से, विंडोज एक्सपी और विंडोज विस्टा के बीच अंतर कैसे करें?कैसे जांचें कि ओएस विस्टा पाइथन में है या नहीं?
>>> isWindowsVista()
True
पाइथन और pywin32 या wxPython का उपयोग करके, सबसे आसान संभव तरीके से, विंडोज एक्सपी और विंडोज विस्टा के बीच अंतर कैसे करें?कैसे जांचें कि ओएस विस्टा पाइथन में है या नहीं?
>>> isWindowsVista()
True
पायथन में आपकी मदद करने के लिए प्यारा 'मंच' मॉड्यूल है।
>>> import platform
>>> platform.win32_ver()
('XP', '5.1.2600', 'SP2', 'Multiprocessor Free')
>>> platform.system()
'Windows'
>>> platform.version()
'5.1.2600'
>>> platform.release()
'XP'
नोट: के रूप में टिप्पणी में उल्लेख उचित मूल्यों जब अजगर के पुराने संस्करणों का उपयोग कर वापस नहीं किया जा सकता है।
पायथन 2.5.2 कहते हैं ('', '', '', '') Vista में platform.win32_ver(), लेकिन पायथन 2.6 ठीक से 'Vista' का जवाब देता है। धन्यवाद! – DzinX
सर्वोत्तम और स्पष्ट। कृपया ध्यान दें कि Win7 जारी होने के बाद से आपका प्रोग्राम आज काम नहीं कर सकता है और यह भी 6.1 –
है जैसा कि अहमेट ने इंगित किया है, यदि आप विंडोज 7 पर पाइथन के पुराने संस्करण चलाते हैं तो यह काम नहीं करेगा। पायथन 2.5.4 विंडोज 7 पर निम्नलिखित देता है: ' platform.release() => 'Vista', 'platform.win32_ver() => ('', '6.1.7600', '', 'मल्टीप्रोसेसर फ्री')'। आश्चर्य की बात नहीं है कि 2.5 पुराना है, लेकिन कुछ पता होना चाहिए। – sam
सरल समाधान मैंने पाया यह एक है:
अनिवार्य रूप से, मैं एक समारोह है कि यह सच है वापस आ जाएगी 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))
Win32api में सभी कार्यों के साथ, इसे सीधे घोड़े के मुंह से प्राप्त करें - http://msdn.microsoft.com/en-us/library/ms724833(VS.85)। एएसपीएक्स लौटा हुआ टपल लगभग OSVERSIONSINFOEX –
के क्षेत्रों में मानचित्र करता है यह भी गलत है। यह विंडोज 7 के लिए सच होगा और संभवतः जो कुछ भी विंडोज 7 के बाद आता है। Vista में संस्करण 6.0 है, विंडोज 7 में संस्करण 6.1 है। वास्तव में लोग, यह सही नहीं है! –
@ डेविड हेफरनन: पोस्ट के टाइमस्टैम्प की जांच करें, यह विंडोज 7 के बाहर आने से पहले था :) लेकिन इसे इंगित करने के लिए धन्यवाद। मैंने मामूली संस्करण संख्या की जांच करने के लिए कोड अपडेट किया, मुझे लगता है कि यह इस बार पर्याप्त होना चाहिए। – DzinX
मुड़ में इस्तेमाल किया समाधान है, जिसकी आवश्यकता नहीं है pywin32:
def isVista():
if getattr(sys, "getwindowsversion", None) is not None:
return sys.getwindowsversion()[0] == 6
else:
return False
ध्यान दें कि यह विंडोज सर्वर 2008 से भी मेल खाता है
धन्यवाद! मुझे pywin32 या wxPython का उपयोग करने में कोई फर्क नहीं पड़ता (मैंने उन्हें वैसे भी आयात किया है), लेकिन मैं यह सुनिश्चित करना चाहता हूं कि ओएस विस्टा है। मुझे सर्वर 2008 के बारे में बहुत कुछ नहीं पता है, इसलिए मैं नहीं चाहता कि मेरा Vista- विशिष्ट कोड इस पर चलें। – DzinX
मुझे अप-वोट समझ में नहीं आता है। विंडोज 7 में 6 के बराबर बड़ा संस्करण भी है। यदि इरादा का मतलब है विस्टाऑरलेटर तो कोड को> = 6. कहना चाहिए, इसलिए, हालांकि आप इसे समझते हैं, यह गलत है। –
@ डेविड हेफरनन यह उत्तर विंडोज 7 जारी होने से एक साल पहले दिया गया था। –
http://www.brunningonline.net/simon/blog/archives/winGuiAuto.py.html से एक विचार मदद कर सकता है, मूल रूप से अपने प्रश्न का उत्तर मिल सकती है:
win_version = {4: "NT", 5: "2K", 6: "XP"}[os.sys.getwindowsversion()[0]]
print "win_version=", win_version
import platform
if platform.release() == "Vista":
# Do something.
या
import platform
if "Vista" in platform.release():
# Do something.
ध्यान दें कि अगर आप केवल रुचि खिड़कियों linux बनाम हैं आदि आप 'उपयोग कर सकते हैं अगर os.name == "nt": ' –