Obtener información sobre el sistema operativo y la versión de Python que se ejecuta en el entorno.

Negocio

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.

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

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.

Copied title and URL