El módulo de plataforma de la biblioteca estándar se utiliza para obtener información sobre el sistema operativo en el que se está ejecutando Python y su versión (release). Usando este módulo, es posible cambiar el proceso para cada SO y versión.
La siguiente información se proporciona aquí.
- Obtenga el nombre del sistema operativo:
platform.system()
- Obtenga información sobre la versión:
platform.release()
,version()
- Obtenga el sistema operativo y la versión de una vez:
platform.platform()
- Ejemplos de resultados para cada sistema operativo
- macOS
- Windows
- Ubuntu
- Código de ejemplo para cambiar el procesamiento en función del sistema operativo
Si quieres saber la versión de Python que estás ejecutando, consulta el siguiente artículo.
- Artículos relacionados:Comprobar y mostrar la versión de Python (por ejemplo, sys.version)
Todo el código de ejemplo de la primera mitad se ejecuta en macOS Mojave 10.14.2; los resultados de ejemplo en Windows y Ubuntu se muestran en la segunda mitad; las funciones específicas del sistema operativo también se discuten en la segunda mitad.
- Obtener el nombre del sistema operativo: platform.system()
- Obtener información de la versión (release): platform.release(), version()
- Obtener el sistema operativo y la versión de una vez: platform.platform()
- Ejemplos de resultados para cada sistema operativo
- Código de ejemplo para cambiar el procesamiento en función del sistema operativo
Obtener el nombre del sistema operativo: platform.system()
El nombre del sistema operativo se obtiene mediante platform.system(). El valor de retorno es una cadena.
import platform
print(platform.system())
# Darwin
Obtener información de la versión (release): platform.release(), version()
La información sobre la versión del sistema operativo (release) se obtiene con las siguientes funciones. En ambos casos, el valor de retorno es una cadena.
platform.release()
platform.version()
Como se muestra en el siguiente ejemplo, platform.release() devuelve un contenido más sencillo.
print(platform.release())
# 18.2.0
print(platform.version())
# Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64
Obtener el sistema operativo y la versión de una vez: platform.platform()
El nombre del sistema operativo y la información de la versión pueden obtenerse juntos utilizando platform.platform(). El valor de retorno es una cadena.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Si el valor del argumento terse es TRUE, sólo se devolverá la información mínima.
print(platform.platform(terse=True))
# Darwin-18.2.0
También hay un argumento aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
El resultado es el mismo en el entorno del ejemplo, pero algunos sistemas operativos devolverán un alias como nombre del SO.
Si aliased es verdadero, devuelve el resultado utilizando un alias en lugar del nombre común del sistema. Por ejemplo, SunOS se convierte en Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Ejemplos de resultados para cada sistema operativo
Se mostrarán ejemplos de resultados en macOS, Windows y Ubuntu, así como funciones específicas del sistema operativo.
macOS
Ejemplo del resultado en macOS Mojave 10.14.2. Igual que el ejemplo mostrado anteriormente.
print(platform.system())
# Darwin
print(platform.release())
# 18.2.0
print(platform.version())
# Darwin Kernel Version 18.2.0: Mon Nov 12 20:24:46 PST 2018; root:xnu-4903.231.4~2/RELEASE_X86_64
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Ten en cuenta que es Darwin, no macOS ni Mojave.
Para más información sobre Darwin, consulte la página de Wikipedia. También hay una descripción de la correspondencia entre el número de la última versión y el nombre en macOS.
Existe una función específica de madOS llamada platform.mac_ver().
El valor de retorno se devuelve como una tupla (release, versioninfo, machine).
En el entorno del ejemplo, versioninfo es desconocido y es una tupla de cadena vacía.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Ejemplo de resultados en Windows 10 Home.
print(platform.system())
# Windows
print(platform.release())
# 10
print(platform.version())
# 10.0.17763
print(platform.platform())
# Windows-10-10.0.17763-SP0
Tenga en cuenta que el valor de retorno 10 de platform.release() es una cadena, no un entero.
Existe una función específica de Windows llamada platform.win32_ver().
El valor de retorno se devuelve como una tupla (release, version, csd, ptype).
csd indica el estado del paquete de servicios.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Ejemplo del resultado en Ubuntu 18.04.1 LTS.
print(platform.system())
# Linux
print(platform.release())
# 4.15.0-42-generic
print(platform.version())
# #45-Ubuntu SMP Thu Nov 15 19:32:57 UTC 2018
print(platform.platform())
# Linux-4.15.0-44-generic-x86_64-with-Ubuntu-18.04-bionic
Existe una función específica de Unix platform.linux_distribution().
El valor de retorno se devuelve como una tupla (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Tenga en cuenta que platform.linux_distribution() ha sido eliminado en Python 3.8. Se recomienda utilizar la distribución de la biblioteca de terceros en su lugar, que debe instalarse por separado utilizando pip.
Código de ejemplo para cambiar el procesamiento en función del sistema operativo
Si quieres cambiar la función o el método a utilizar dependiendo del sistema operativo, puedes utilizar un método como platform.system() para determinar el valor.
A continuación se muestra un ejemplo para obtener la fecha de creación de un archivo.
def creation_date(path_to_file):
"""
Try to get the date that a file was created, falling back to when it was
last modified if that isn't possible.
See http://stackoverflow.com/a/39501288/1709587 for explanation.
"""
if platform.system() == 'Windows':
return os.path.getctime(path_to_file)
else:
stat = os.stat(path_to_file)
try:
return stat.st_birthtime
except AttributeError:
# We're probably on Linux. No easy way to get creation dates here,
# so we'll settle for when its content was last modified.
return stat.st_mtime
En este ejemplo, se utiliza primero el valor de platform.system() para determinar si es Windows u otro.
A continuación, utiliza la gestión de excepciones para cambiar el proceso entre el caso en el que existe el atributo st_birthtime y los demás casos.