Cómo identificar en qué sistema operativo se está ejecutando Python

Resuelto Mark Harrison asked hace 16 años • 27 respuestas

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

Mark Harrison avatar Aug 05 '08 10:08 Mark Harrison
Aceptado
>>> import os

>>> os.name
'posix'

>>> import platform

>>> platform.system()
'Linux'

>>> platform.release()
'2.6.22-15-generic'

La salida de platform.system()es la siguiente:

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

Ver: platform— Acceso a los datos identificativos de la plataforma subyacente

Louis Brandy avatar Aug 05 '2008 03:08 Louis Brandy

¡ Aquí están los resultados del sistema para Windows Vista !

>>> import os

>>> os.name
'nt'

>>> import platform

>>> platform.system()
'Windows'

>>> platform.release()
'Vista'

Y para Windows 10:

>>> import os

>>> os.name
'nt'

>>> import platform

>>> platform.system()
'Windows'

>>> platform.release()
'10'
Joey deVilla avatar Aug 05 '2008 03:08 Joey deVilla

Para que conste, aquí están los resultados en Mac:

>>> import os
>>> os.name
'posix'
>>> import platform
>>> platform.system()
'Darwin'
>>> platform.release()
'8.11.1'
Mark Harrison avatar Aug 05 '2008 04:08 Mark Harrison

Cuento

Usar platform.system(). Devuelve Windows, Linuxo Darwin(para OS X).

Larga historia

Hay tres formas de obtener el sistema operativo en Python, cada una con sus ventajas y desventajas:

Método 1

>>> import sys
>>> sys.platform
'win32'  # could be 'linux', 'linux2, 'darwin', 'freebsd8' etc

Cómo funciona esto ( fuente ): internamente llama a las API del sistema operativo para obtener el nombre del sistema operativo tal como lo define el sistema operativo. Consulte aquí para conocer varios valores específicos del sistema operativo.

Pro: Sin magia, nivel bajo.

Desventaja: Depende de la versión del sistema operativo, por lo que es mejor no usarlo directamente.

Método 2

>>> import os
>>> os.name
'nt'  # for Linux and Mac it prints 'posix'

Cómo funciona esto ( fuente ): internamente verifica si Python tiene módulos específicos del sistema operativo llamados posix o nt .

Ventaja: fácil de comprobar si se trata de un sistema operativo POSIX

Desventaja: no hay diferenciación entre Linux u OS X.

Método 3

>>> import platform
>>> platform.system()
'Windows' # For Linux it prints 'Linux'. For Mac, it prints `'Darwin'

Cómo funciona esto ( fuente ): internamente, eventualmente llamará a las API internas del sistema operativo, obtendrá el nombre específico de la versión del sistema operativo, como 'win32' o 'win16' o 'linux1' y luego se normalizará a nombres más genéricos como 'Windows' o 'Linux'. ' o 'Darwin' aplicando varias heurísticas.

Pro: la mejor forma portátil para Windows, OS X y Linux.

Desventaja: la gente de Python debe mantener actualizada la heurística de normalización.

Resumen

  • Si desea comprobar si el sistema operativo es Windows, Linux u OS X, la forma más confiable es platform.system().
  • Si desea realizar llamadas específicas del sistema operativo, pero a través de módulos Python integrados posixo nt, utilice os.name.
  • Si desea obtener el nombre del sistema operativo sin formato tal como lo proporciona el propio sistema operativo, utilice sys.platform.
Shital Shah avatar Sep 23 '2019 23:09 Shital Shah

Código de muestra para diferenciar sistemas operativos usando Python:

import sys

if sys.platform.startswith("linux"):  # could be "linux", "linux2", "linux3", ...
    # linux
elif sys.platform == "darwin":
    # MAC OS X
elif os.name == "nt":
    # Windows, Cygwin, etc. (either 32-bit or 64-bit)
user3928804 avatar Sep 16 '2014 07:09 user3928804