Python: ¿En qué sistema operativo me estoy ejecutando?

votos
410

¿Qué necesito ver para ver si estoy en Windows, Unix, etc.?

Publicado el 05/08/2008 a las 04:23
fuente por usuario
En otros idiomas...                            


23 respuestas

votos
513

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

El resultado de platform.system()es el siguiente:

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

Ver: plataforma: acceso a los datos de identificación de la plataforma subyacente

Respondida el 05/08/2008 a las 04:27
fuente por usuario

votos
146

Dang - lbrandy me ganó al golpe, pero eso no significa que no pueda darte los resultados del sistema para Vista.

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

... y no puedo creer que nadie haya publicado uno para Windows 10 aún:

>>> import os
>>> os.name
'nt'
>>> import platform
>>> platform.system()
'Windows'
>>> platform.release()
'10'
Respondida el 05/08/2008 a las 04:57
fuente por usuario

votos
108

Para el registro, aquí están los resultados en Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Respondida el 05/08/2008 a las 05:13
fuente por usuario

votos
73

Código de ejemplo para diferenciar el uso de pitón de SO:

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
Respondida el 16/09/2014 a las 08:42
fuente por usuario

votos
35

También puede usar sys.platform si ya tiene sys importado y no desea importar otro módulo

>>> import sys
>>> sys.platform
'linux2'
Respondida el 26/08/2008 a las 16:41
fuente por usuario

votos
24

Si desea que el usuario puede leer los datos, pero todavía se detalla, puede utilizar platform.platform ()

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

He aquí un par de llamadas diferentes posibles que puede realizar para identificar dónde se encuentra

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(),
))

Las salidas de este guión corrió en unos pocos sistemas diferentes están disponibles aquí: https://github.com/hpcugent/easybuild/wiki/OS_flavor_name_version

Respondida el 23/01/2013 a las 11:55
fuente por usuario

votos
17

hago esto

import sys
print sys.platform

Documentos aquí: sys.platform .

Todo lo que necesitas es probablemente en el módulo sys.

Respondida el 16/02/2009 a las 15:43
fuente por usuario

votos
10

Estoy utilizando la herramienta WLST que viene con WebLogic, y que no aplique el paquete 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'

Aparte de parchear el sistema javaos.py ( problema con os.system () en Windows 2003 con jdk1.5 ) (que no puedo hacer, tengo que usar WebLogic fuera de la caja), esto es lo que yo uso:

def iswindows():
  os = java.lang.System.getProperty( "os.name" )
  return "win" in os.lower()
Respondida el 11/06/2010 a las 08:37
fuente por usuario

votos
9
>>> import platform
>>> platform.system()
Respondida el 25/06/2011 a las 12:10
fuente por usuario

votos
8

Para Jython la única manera de obtener el nombre os he encontrado es comprobar os.namela propiedad de Java (tratado con sys, osy platformmódulos de Jython en WinXP 2.5.3):

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
Respondida el 09/01/2013 a las 09:47
fuente por usuario

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)
Respondida el 10/10/2011 a las 01:11
fuente por usuario

votos
6

Ten cuidado si estás en Windows con Cygwin donde os.nameestá posix.

>>> import os, platform
>>> print os.name
posix
>>> print platform.system()
CYGWIN_NT-6.3-WOW
Respondida el 08/07/2015 a las 14:46
fuente por usuario

votos
6

resultados interesantes en Windows 8:

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

Editar: Eso es un error

Respondida el 14/02/2013 a las 23:44
fuente por usuario

votos
5

prueba esto:

import os

os.uname()

y se puede hacer:

info=os.uname()
info[0]
info[1]
Respondida el 16/01/2015 a las 18:13
fuente por usuario

votos
5

Si no en busca de la versión del kernel, etc, pero en busca de la distribución de Linux es posible que desee utilizar la siguiente

en 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

en python2.4

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

Obviamente, esto sólo funcionará si está ejecutando esto en Linux. Si desea tener más comandos genérica en todas las plataformas, se pueden mezclar esto con ejemplos de código que figuran en otras respuestas.

Respondida el 28/03/2013 a las 06:19
fuente por usuario

votos
5

en la misma vena....

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")
Respondida el 28/09/2011 a las 18:54
fuente por usuario

votos
4

¿Qué tal una nueva respuesta:

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

Esta sería la salida si yo estaba usando OSX

Respondida el 14/08/2017 a las 14:00
fuente por usuario

votos
3

También puede utilizar solamente módulo de plataforma sin importar módulo os para obtener toda la información.

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

Un diseño agradable y ordenado para informar objetivo se puede lograr utilizando esta línea:

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

Eso le da a esta salida:

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

Lo que falta por lo general es la versión del sistema operativo, pero usted debe saber si está ejecutando Windows, Linux o Mac de forma autónoma plataforma es el uso de esta prueba:

In []: for i in [platform.linux_distribution(),platform.mac_ver(),platform.win32_ver()]:
   ....:     if i[0]:
   ....:         print 'Version: ',i[0]
Respondida el 20/08/2016 a las 05:03
fuente por usuario

votos
3

Compruebe las pruebas disponibles con plataforma de módulo e imprimir la respuesta fuera para su 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
Respondida el 30/10/2014 a las 00:43
fuente por usuario

votos
1

Si está ejecutando MacOS X y ejecutar platform.system()a obtener Darwin porque MacOS X está construido sobre Darwin OS de Apple. Darwin es el núcleo de MacOS X y es esencialmente MacOS X sin la interfaz gráfica de usuario.

Respondida el 13/01/2018 a las 18:29
fuente por usuario

votos
1

Utilice el import osy os.namepalabras clave.

Respondida el 07/05/2017 a las 00:07
fuente por usuario

votos
0

¿Qué tal una implementación simple enumeración como la siguiente? No hay necesidad de bibliotecas 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

Simplemente se puede acceder con valor de enumeración

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

PS Es python3

Respondida el 27/09/2018 a las 17:39
fuente por usuario

votos
-4

Simplemente para la corrección, variable de entorno "OS" parece definirse por todas partes. En Windows XP / 7/8/10, se establece en "Windows_NT". En Linux SuSE SP2 se establece en "SLES11 Linux x86-64 [2]". No tengo acceso a las máquinas OS-X o BSD, sería interesante comprobar allí también.

import os

os_name = os.getenv("OS")
if os_name == "Windows_NT":
    # Windows
elif "linux" in os_name:
    # Linux
elif ...
Respondida el 01/12/2015 a las 04:28
fuente por usuario

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