2008-10-13 28 views

cevap

40

Python size yardımcı olacak güzel 'platform' modülüne sahiptir.

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

NOT: Açıklamalarda belirtildiği gibi piton eski sürümlerini kullanırken uygun değerler iade edilmeyebilir.

+1

Python 2.5.2, Vista'da platform.win32_ver() için ('', '', '', '') diyor, ancak Python 2.6 'Vista' düzgün bir şekilde yanıt veriyor. Teşekkürler! – DzinX

+0

en iyi ve açık. Lütfen programınızın Win7 yayınlanmasından bu yana çalışmayacağını unutmayın ve aynı zamanda 6.1 –

+0

da belirtildi. Ahmet'in belirttiği gibi, Python'un eski sürümlerini Windows 7'de çalıştırırsanız bu çalışmaz. Python 2.5.4, Windows 7'de aşağıdakileri döndürür: ' platform.release() => 'Vista'', platform.win32_ver() => (' ',' 6.1.7600 ',' ',' Çok İşlemci Serbest ') '. Şaşırtıcı değil, 2.5 yaşlandı, ama farkında olmak için bir şey. – sam

8

basit çözüm bu biridir:

Esasen, ben şimdiki OS Vista IFF Gerçek dönecektir adlı bir işlev gerek

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'deki tüm işlevlerde olduğu gibi, doğrudan atın ağzından alın - http://msdn.microsoft.com/en-us/library/ms724833(VS.85). aspx İade edilen tuple kabaca OSVERSIONSINFOEX –

+2

alanlarına eşleşiyor. Bu da yanlış. Windows 7 için ve muhtemelen Windows 7'den sonra gelen her şey için geri dönecektir. Vista'nın sürüm 6.0, Windows 7'nin 6.1 sürümü vardır. Gerçekten insanlar, doğru olması zor değil! –

+0

@David Heffernan: Gönderinin zaman damgasını kontrol edin, bu Windows 7 çıkmadan önce YOL oldu :) ama bunun için teşekkürler. Küçük sürüm numarasını kontrol etmek için kodu güncelledim, bence bu kez yeterli olmalı. – DzinX

8

Twisted kullanılan solüsyon, Bu, aynı zamanda Windows Server 2008 ile de uyumlu olacağını unutmayın.

+0

Teşekkürler! Pywin32 veya wxPython'u kullanmamın bir sakıncası yok (yine de onları aldım), ancak işletim sisteminin Vista olduğundan emin olmak isterim. Server 2008 hakkında fazla bir şey bilmiyorum, bu yüzden Vista'ya özgü kodun üzerinde çalışmasını istemem. – DzinX

+2

Ben oyu anlamıyorum. Windows 7 de 6'ya eşit büyük bir sürümü vardır. Eğer amaç isVistaOrLater olması isteniyorsa, kod> = 6 anlamına gelmelidir. Öyleyse, siz bunu yorumluyorsunuz, yanlış. –

+0

@DavidHeffernan Bu cevap, Windows7'nin piyasaya sürülmesinden bir yıl önce verildi. –

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

veya linux vs sadece ilgilenen pencereler ise vb Eğer `kullanabileceği

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