Как проверить, если я работаю на Windows в Python? [дубликат]



этот вопрос уже есть ответ здесь:



Я нашел модуль платформы, но он говорит, что он возвращает "Windows", и он возвращает "Microsoft" на моей машине. Я замечаю, что в другом потоке здесь на stackoverflow он иногда возвращает "Vista".



Итак, вопрос в том, как сделать имплементацию?



if isWindows():
...


в режиме совместимости как? Если мне нужно проверить такие вещи, как "Vista", то он сломается, когда выйдет следующая версия windows.





Примечание: ответы, утверждающие, что это дублирующий вопрос, на самом деле не отвечают на вопрос isWindows. Они отвечают на вопрос "какая платформа". Поскольку многие ароматы windows существуют, ни один из них не описывает всесторонне, как получить ответ isWindows.

166   5  

5 ответов:

Python os модуль

конкретно

os.name название операционной системы зависимого модуля системы импортного производства. Этот в настоящее время такие имена были зарегистрирован: 'posix', 'nt', 'mac', 'os2', 'ce', 'java', 'riscos'.

в вашем случае, вы хотите проверить 'nt' как os.name выход:

import os

if os.name == 'nt':
     ...

вы используете platform.system?

 system()
        Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.

        An empty string is returned if the value cannot be determined.

если это не работает, может попробовать platform.win32_ver и если он не вызывает исключения, вы находитесь в Windows; но я не знаю, совместимо ли это с 64-разрядной версией, поскольку в имени есть 32.

win32_ver(release='', version='', csd='', ptype='')
        Get additional version information from the Windows Registry
        and return a tuple (version,csd,ptype) referring to version
        number, CSD level and OS type (multi/single
        processor).

но os.name вероятно, это путь, как уже упоминали другие.


Для чего это стоит, вот несколько способов, которыми они проверяют окна platform.py:
if sys.platform == 'win32':
#---------
if os.environ.get('OS','') == 'Windows_NT':
#---------
try: import win32api
#---------
# Emulation using _winreg (added in Python 2.0) and
# sys.getwindowsversion() (added in Python 2.3)
import _winreg
GetVersionEx = sys.getwindowsversion
#----------
def system():

    """ Returns the system/OS name, e.g. 'Linux', 'Windows' or 'Java'.    
        An empty string is returned if the value cannot be determined.   
    """
    return uname()[0]

вы должны быть в состоянии полагаться на os. name.

import os
if os.name == 'nt':
    # ...

edit: теперь я бы сказал, что самый ясный способ сделать это-через платформа модуль, согласно другому ответу.

в sys тоже:

import sys
# its win32, maybe there is win64 too?
is_windows = sys.platform.startswith('win')
import platform
is_windows = any(platform.win32_ver())

или

import sys
is_windows = hasattr(sys, 'getwindowsversion')

Comments

    Ничего не найдено.