Mümkün olan en basit şekilde, Windows XP ve Windows Vista arasında Python ve pywin32 veya wxPython'u nasıl ayırt edersiniz? BulduğumOS'nin Vista'nın Python'da olup olmadığı nasıl kontrol edilir?
>>> isWindowsVista()
True
Mümkün olan en basit şekilde, Windows XP ve Windows Vista arasında Python ve pywin32 veya wxPython'u nasıl ayırt edersiniz? BulduğumOS'nin Vista'nın Python'da olup olmadığı nasıl kontrol edilir?
>>> isWindowsVista()
True
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.
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
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 –
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
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))
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 –
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! –
@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
Twisted kullanılan solüsyon, Bu, aynı zamanda Windows Server 2008 ile de uyumlu olacağını unutmayın.
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
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ış. –
@DavidHeffernan Bu cevap, Windows7'nin piyasaya sürülmesinden bir yıl önce verildi. –
http://www.brunningonline.net/simon/blog/archives/winGuiAuto.py.html gelen bir fikir temelde sorunuzu yanıt verebilecek yardımcı olabilir:
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.
veya linux vs sadece ilgilenen pencereler ise vb Eğer `kullanabileceği
import platform
if "Vista" in platform.release():
# Do something.
not eğer os.name == "nt": ' –