Python: Qual OS estou rodando em?

votos
410

O que eu preciso para olhar para ver se eu estou no Windows, Unix, etc?

Publicado 05/08/2008 em 04:23
fonte usuário
Em outras línguas...                            


23 respostas

votos
513

>>> import os
>>> print os.name
posix
>>> import platform
>>> platform.system()
'Linux'
>>> platform.release()
'2.6.22-15-generic'

A saída platform.system()é como se segue:

  • Linux: Linux
  • Mac: Darwin
  • Janelas: Windows

Veja: plataforma - Acesso a dados de identificação da plataforma subjacente

Respondeu 05/08/2008 em 04:27
fonte usuário

votos
146

Dang - lbrandy me bater para o soco, mas isso não significa que eu não posso lhe fornecer os resultados do sistema para o Vista!

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'Vista'

... e eu não posso acreditar que uma postada de ninguém para Windows 10 ainda:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Respondeu 05/08/2008 em 04:57
fonte usuário

votos
108

Para o registro é aqui os resultados no Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Respondeu 05/08/2008 em 05:13
fonte usuário

votos
73

código de exemplo para diferenciar usando python do OS:

from sys import platform as _platform

if _platform == "linux" or _platform == "linux2":
   # linux
elif _platform == "darwin":
   # MAC OS X
elif _platform == "win32":
   # Windows
elif _platform == "win64":
    # Windows 64-bit
Respondeu 16/09/2014 em 08:42
fonte usuário

votos
35

Você também pode usar sys.platform se você já importou sys e você não deseja importar outro módulo

>>> import sys
>>> sys.platform
'linux2'
Respondeu 26/08/2008 em 16:41
fonte usuário

votos
24

Se você quiser usuário dados legíveis, mas ainda detalhado, você pode usar platform.platform ()

>>> import platform
>>> platform.platform()
'Linux-3.3.0-8.fc16.x86_64-x86_64-with-fedora-16-Verne'

Eis algumas chamadas diferentes possíveis que você pode fazer para identificar onde você está

import platform
import sys

def linux_distribution():
  try:
    return platform.linux_distribution()
  except:
    return "N/A"

print("""Python version: %s
dist: %s
linux_distribution: %s
system: %s
machine: %s
platform: %s
uname: %s
version: %s
mac_ver: %s
""" % (
sys.version.split('\n'),
str(platform.dist()),
linux_distribution(),
platform.system(),
platform.machine(),
platform.platform(),
platform.uname(),
platform.version(),
platform.mac_ver(),
))

As saídas deste script foi executado em alguns sistemas diferentes estão disponíveis aqui: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

Respondeu 23/01/2013 em 11:55
fonte usuário

votos
17

Eu faço isso

import sys
print sys.platform

Docs aqui: sys.platform .

Tudo que você precisa é provavelmente no módulo sys.

Respondeu 16/02/2009 em 15:43
fonte usuário

votos
10

Eu estou usando a ferramenta WLST que vem com WebLogic, e não implementar o pacote de plataforma.

wls:/offline> import os
wls:/offline> print os.name
java 
wls:/offline> import sys
wls:/offline> print sys.platform
'java1.5.0_11'

Além de corrigir o sistema javaos.py ( problema com os.system () no Windows 2003 com jdk1.5 ) (que eu não posso fazer, eu tenho que usar o WebLogic fora da caixa), este é o que eu uso:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
Respondeu 11/06/2010 em 08:37
fonte usuário

votos
9
>>> import platform
>>> platform.system()
Respondeu 25/06/2011 em 12:10
fonte usuário

votos
8

Para Jython a única maneira de obter o nome OS eu encontrei é verificar os.namepropriedade Java (tentei com sys, ose platformmódulos para Jython 2.5.3 no WinXP):

def get_os_platform():
    """return platform name, but for Jython it uses os.name Java property"""
    ver = sys.platform.lower()
    if ver.startswith('java'):
        import java.lang
        ver = java.lang.System.getProperty("os.name").lower()
    print('platform: %s' % (ver))
    return ver
Respondeu 09/01/2013 em 09:47
fonte usuário

votos
7

/usr/bin/python3.2

def cls():
    from subprocess import call
    from platform import system

    os = system()
    if os == 'Linux':
        call('clear', shell = True)
    elif os == 'Windows':
        call('cls', shell = True)
Respondeu 10/10/2011 em 01:11
fonte usuário

votos
6

Cuidado se você estiver no Windows com Cygwin onde os.nameé posix.

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Respondeu 08/07/2015 em 14:46
fonte usuário

votos
6

resultados interessantes no Windows 8:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'post2008Server'

Edit: Isso é um bug

Respondeu 14/02/2013 em 23:44
fonte usuário

votos
5

tente o seguinte:

import os

os.uname()

e você pode fazê-lo:

info=os.uname()
info[0]
info[1]
Respondeu 16/01/2015 em 18:13
fonte usuário

votos
5

Se você não está procurando a versão do kernel etc, mas olhando para a distribuição linux você pode querer usar o seguinte

em python2.6 +

>>> import platform
>>> print platform.linux_distribution()
('CentOS Linux', '6.0', 'Final')
>>> print platform.linux_distribution()[0]
CentOS Linux
>>> print platform.linux_distribution()[1]
6.0

no python2.4

>>> import platform
>>> print platform.dist()
('centos', '6.0', 'Final')
>>> print platform.dist()[0]
centos
>>> print platform.dist()[1]
6.0

Obviamente, isso só funcionará se você estiver executando isso no linux. Se você quiser ter mais de script genérico em todas as plataformas, você pode misturar isso com exemplos de código dadas em outras respostas.

Respondeu 28/03/2013 em 06:19
fonte usuário

votos
5

Na mesma veia....

import platform
is_windows=(platform.system().lower().find("win") > -1)

if(is_windows): lv_dll=LV_dll("my_so_dll.dll")
else:           lv_dll=LV_dll("./my_so_dll.so")
Respondeu 28/09/2011 em 18:54
fonte usuário

votos
4

Como sobre uma nova resposta:

import psutil
psutil.OSX     #True
psutil.WINDOWS #False
psutil.LINUX   #False 

Esta seria a saída se eu estava usando OSX

Respondeu 14/08/2017 em 17:00
fonte usuário

votos
3

Você também pode usar somente módulo de plataforma sem importar módulo os para obter todas as informações.

>>> import platform
>>> platform.os.name
'posix'
>>> platform.uname()
('Darwin', 'mainframe.local', '15.3.0', 'Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64', 'x86_64', 'i386')

Um layout agradável e arrumado para relatar propósito pode ser alcançado usando esta linha:

for i in zip(['system','node','release','version','machine','processor'],platform.uname()):print i[0],':',i[1]

Isso dá essa saída:

system : Darwin
node : mainframe.local
release : 15.3.0
version : Darwin Kernel Version 15.3.0: Thu Dec 10 18:40:58 PST 2015; root:xnu-3248.30.4~1/RELEASE_X86_64
machine : x86_64
processor : i386

O que está faltando é geralmente a versão do sistema operacional, mas você deve saber se você estiver executando Windows, Linux ou Mac uma maneira indipendent plataforma é usar este teste:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]
Respondeu 20/08/2016 em 08:03
fonte usuário

votos
3

Verifique os testes disponíveis com plataforma de módulo e imprimir a resposta para fora para o seu sistema:

import platform

print dir(platform)

for x in dir(platform):
    if x[0].isalnum():
        try:
            result = getattr(platform, x)()
            print "platform."+x+": "+result
        except TypeError:
            continue
Respondeu 30/10/2014 em 00:43
fonte usuário

votos
1

Se você estiver executando o MacOS X e correr platform.system()você começa darwin, porque o MacOS X é construído sobre Darwin OS, da Apple. Darwin é o kernel de MacOS X e é essencialmente MacOS X sem a GUI.

Respondeu 13/01/2018 em 21:29
fonte usuário

votos
1

Use o import ose os.namepalavras-chave.

Respondeu 07/05/2017 em 03:07
fonte usuário

votos
0

Como cerca de uma implementação simples Enum como o seguinte? Não há necessidade de libs externa!

import platform
from enum import Enum
class OS(Enum):
    def checkPlatform(osName):
        return osName.lower()== platform.system().lower()

    MAC = checkPlatform("darwin")
    LINUX = checkPlatform("linux")
    WINDOWS = checkPlatform("windows")  #I haven't test this one

Simplesmente você pode acessar com o valor Enum

if OS.LINUX.value:
    print("Cool it is Linux")

PS É python3

Respondeu 27/09/2018 em 17:39
fonte usuário

votos
-4

Apenas para completar, variável "OS" ambiente parece ser definido em todos os lugares. No Windows XP / 7/8/10 é definido como "Windows_NT". No Linux SuSE SP2 é definido como "SLES11 linux x86-64 [2]". Eu não tenho acesso a máquinas OS-X ou BSD, seria interessante verificar lá também.

import os

os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...
Respondeu 01/12/2015 em 07:28
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more