Como faço para verificar se estou executando no Windows em Python? [duplicado
-
19-09-2019 - |
Pergunta
Esta pergunta já tem uma resposta aqui:
- Python: Em que sistema operacional estou executando? 27 respostas
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
.
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')