Obteniu informació sobre el sistema operatiu i la versió de Python que s’executa a l’entorn.

Negocis

El mòdul de plataforma de biblioteca estàndard s’utilitza per obtenir informació sobre el sistema operatiu en què s’executa Python i la seva versió (versió). Mitjançant aquest mòdul, és possible canviar el procés per a cada SO i versió.

Aquí es proporciona la informació següent.

  • Obteniu el nom del sistema operatiu:platform.system()
  • Obteniu informació sobre la versió (versió):platform.release(),version()
  • Obteniu el sistema operatiu i la versió alhora:platform.platform()
  • Exemples de resultats per a cada SO
    • macOS
    • Windows
    • Ubuntu
  • Codi de mostra per canviar el processament segons el sistema operatiu

Si voleu conèixer la versió de Python que esteu executant, consulteu l’article següent.

Tot el codi de mostra de la primera meitat s’executa a macOS Mojave 10.14.2; exemples de resultats a Windows i Ubuntu es mostren a la segona meitat; Les funcions específiques del sistema operatiu també es discuteixen a la segona meitat.

Obteniu el nom del sistema operatiu: platform.system ()

El nom del sistema operatiu l’obté platform.system (). El valor de retorn és una cadena.

import platform

print(platform.system())
# Darwin

Obteniu informació sobre la versió (versió): platform.release (), version ()

La informació sobre la versió del sistema operatiu (versió) s’obté amb les funcions següents. En ambdós casos, el valor de retorn és una cadena.

  • platform.release()
  • platform.version()

Com es mostra a l’exemple següent, platform.release () retorna continguts més senzills.

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

Obteniu el sistema operatiu i la versió alhora: platform.platform ()

El nom del sistema operatiu i la informació sobre la versió (versió) es poden obtenir junts mitjançant platform.platform (). El valor de retorn és una cadena.

print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit

Si el valor de l’argument terse és TRUE, només es retornarà la informació mínima.

print(platform.platform(terse=True))
# Darwin-18.2.0

També hi ha un argument aliased.

print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit

El resultat és el mateix a l’entorn d’exemple, però alguns sistemes operatius retornaran un àlies com a nom del sistema operatiu.

Si aliased és cert, torna el resultat mitjançant un àlies en lloc del nom comú del sistema. Per exemple, SunOS es converteix en Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Exemples de resultats per a cada SO

Es mostraran exemples de resultats a macOS, Windows i Ubuntu, així com funcions específiques del sistema operatiu.

macOS

Exemple del resultat a macOS Mojave 10.14.2. Igual que l’exemple mostrat anteriorment.

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

Tingueu en compte que és Darwin, no macOS ni Mojave.
Per obtenir més informació sobre Darwin, consulteu la pàgina de Viquipèdia. També hi ha una descripció de la correspondència entre el número de versió més recent i el nom a macOS.

Hi ha una funció específica de madOS anomenada platform.mac_ver ().
El valor retornat es torna com a tupla (release, versioninfo, machine).
A l’entorn d’exemple, versioninfo és desconeguda i és una tupla de cadena buida.

print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')

Windows

Exemple de resultats a 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

Tingueu en compte que el valor de retorn 10 de platform.release () és una cadena, no un enter.

Hi ha una funció específica de Windows anomenada platform.win32_ver ().
El valor retornat es torna com a tupla (versió, versió, csd, ptype).
csd indica l’estat del paquet de serveis.

print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')

Ubuntu

Exemple del resultat a 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

Hi ha una funció específica per Unix platform.linux_distribution ().
El valor retornat es torna com a tupla (nomdistricció, versió, identificador).

print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')

Tingueu en compte que platform.linux_distribution () s’ha eliminat a Python 3.8. Es recomana utilitzar la distribució de la biblioteca de tercers, que s’ha d’instal·lar per separat amb pip.

Codi de mostra per canviar el processament segons el sistema operatiu

Si voleu canviar la funció o mètode que s’utilitzarà en funció del sistema operatiu, podeu utilitzar un mètode com ara platform.system () per determinar el valor.

El següent és un exemple d’obtenció de la data de creació d’un fitxer.

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 aquest exemple, primer s’utilitza el valor de platform.system () per determinar si es tracta de Windows o d’altres.
A continuació, utilitza la gestió d’excepcions per canviar el procés entre el cas en què existeix l’atribut st_birthtime i els altres casos.