Pergunta

Esta pergunta já tem uma resposta aqui:

Encontrei o módulo da plataforma, mas ele diz que retorna 'Windows' e está retornando 'Microsoft' na minha máquina. Percebo em outro tópico aqui no Stackoverflow, ele retorna 'Vista' às vezes.

Então, a questão é: como o implemento?

if isWindows():
  ...

De uma maneira compatível para a frente? Se eu tiver que verificar se há coisas como 'Vista', ele quebrará quando a próxima versão do Windows for lançada.


Nota: As respostas alegando que esta é uma pergunta duplicada não respondem à pergunta isWindows. Eles respondem à pergunta "qual plataforma". Como muitos sabores de janelas existem, nenhum deles descreve de forma abrangente como obter uma resposta de isWindows.

Foi útil?

Solução

Pitão OS módulo

Especificamente para Python 3.6/3.7:

os.name: O nome do módulo dependente do sistema operacional importado. Os seguintes nomes foram registrados atualmente: 'Posix', 'NT', 'Java'.

No seu caso, você deseja verificar 'nt' como os.name resultado:

import os

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

Há também uma nota sobre os.name:

Veja também sys.platform tem uma granularidade mais fina. os.uname() fornece informações de versão dependentes do sistema.

o plataforma O módulo fornece verificações detalhadas para a identidade do sistema.

Outras dicas

Você está usando 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.

Se isso não estiver funcionando, talvez tente platform.win32_ver E se não levantar uma exceção, você estará no Windows; Mas não sei se isso é compatível com 64 bits, pois tem 32 no nome.

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).

Mas os.name é provavelmente o caminho a percorrer, como outros mencionaram.


Pelo que vale a pena, aqui estão algumas das maneiras pelas quais eles verificam o Windows em plataform.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]

Você deve poder confiar OS.nome.

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

editar: agora eu diria a maneira mais clara de fazer isso é através do plataforma módulo, conforme a outra resposta.

no sistema também:

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

ou

import sys
is_windows = hasattr(sys, 'getwindowsversion')
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top