Как я могу проверить, работаю ли я на Windows в Python?

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

Итак, вопрос в том, как реализовать?

if isWindows():
  ...

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


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

5 ответов

Решение

Python OS модуль

Специально для Python 3.6/3.7:

os.name Имя импортированного модуля, зависящего от операционной системы. В настоящее время зарегистрированы следующие имена: "posix", "nt", "java".

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

import os

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

Также есть примечание os.name:

Смотрите также sys.platform имеет более тонкую зернистость. os.uname() дает системно-зависимую информацию о версии.

Модуль платформы предоставляет подробные проверки для идентификации системы.

Ты используешь platform.system?

Система ()
        Возвращает имя системы / ОС, например, "Linux", "Windows" или "Java".

        Пустая строка возвращается, если значение не может быть определено.

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

win32_ver (release = '', version = '', csd = '', ptype = '')
        Получить дополнительную информацию о версии из реестра Windows
        и вернуть кортеж (version,csd,ptype) со ссылкой на версию
        номер, уровень CSD и тип ОС (мульти / одиночный
        процессор).

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


Для чего стоит, вот несколько способов проверки Windows в 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':
    # ...

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

В 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')
Другие вопросы по тегам