Cómo identificar en qué sistema operativo se está ejecutando Python
¿Qué necesito mirar para ver si estoy en Windows o Unix, etc.?
>>> 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
¡ 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'
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'
Cuento
Usar platform.system()
. Devuelve Windows
, Linux
o 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
posix
ont
, utiliceos.name
. - Si desea obtener el nombre del sistema operativo sin formato tal como lo proporciona el propio sistema operativo, utilice
sys.platform
.
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)