2016-03-29 2 views
4
import platform 
if platform.release() == 'post2008Server' and platform.version() == '6.2.9200': 
    print "It's windows 8" 

Я использовал это раньше, чтобы распознать Windows 8. Но он возвращается для Windows 10. Так есть ли другой способ его распознать?Как распознать Windows 10 с помощью Python?

+0

Я не имею Windows 10 здесь atm., можете ли вы проверить ['platform.win32_ver'] (https://docs.python.org/3/library/platform.html#windows-platform)? – poke

+0

Если все не удается, вы можете вызвать исполняемый файл 'systeminfo', используя' subprocess' и проанализировать информацию, которую он вам дает. – poke

+0

Невозможно воспроизвести; Я получаю '10.0.10586' от' version() 'и' win32_ver() ' – tzaman

ответ

4

Со следующими версиями Python все работает нормально.

Python 3.5.1:

>>> import platform 
>>> platform.release() 
'10' 
>>> platform.version() 
'10.0.10240' 

Python 2.7.11

>>> import platform 
>>> platform.release() 
'10' 
>>> platform.version() 
'10.0.10240' 

Как об обновлении по крайней мере 2.7.x?


Edit: Как упомянуто @Rogalski, вы всегда можете труба команда ver, и это должно возвратить следующий независимо от версии Python:

>>> import subprocess 
>>> subprocess.Popen('ver', shell=True, stdout=subprocess.PIPE).communicate()[0] 
'\r\nMicrosoft Windows [Version 10.0.10240]\r\n' 
+0

На данный момент я не могу переключиться на 2.7 из-за некоторых зависимостей, поэтому я перейду со второй опцией. Спасибо за вашу помощь. – Deepak

+0

@Deepak, для приложения GUI вы можете добавить опцию 'Popen'' creationflags = 8', чтобы избежать создания окна консоли. 8 - значение флага 'DETACHED_PROCESS'. В этом случае Windows не будет создавать или прикреплять консоль (то есть conhost.exe) к процессу cmd.exe. – eryksun