Obtenez des informations sur le système d’exploitation et la version de Python en cours d’exécution dans l’environnement.

Affaires

Le module platform de la bibliothèque standard est utilisé pour obtenir des informations sur le système d'exploitation sur lequel Python est exécuté et sa version (release). En utilisant ce module, il est possible de basculer le processus pour chaque OS et version.

Les informations suivantes sont fournies ici.

  • Obtenir le nom du système d'exploitation :platform.system()
  • Obtenir des informations sur la version (release) :platform.release(),version()
  • Obtenez le système d'exploitation et la version en une seule fois :platform.platform()
  • Exemples de résultats pour chaque OS
    • macOS
    • Windows
    • Ubuntu
  • Exemple de code pour changer de traitement en fonction du système d'exploitation

Si vous souhaitez connaître la version de Python que vous utilisez, consultez l'article suivant.

Tous les exemples de code de la première moitié sont exécutés sous macOS Mojave 10.14.2 ; des exemples de résultats sous Windows et Ubuntu sont présentés dans la seconde moitié ; les fonctions spécifiques aux systèmes d'exploitation sont également abordées dans la seconde moitié.

Obtenir le nom du système d'exploitation : platform.system()

Le nom du système d'exploitation est obtenu par platform.system(). La valeur de retour est une chaîne de caractères.

import platform

print(platform.system())
# Darwin

Obtenir des informations sur la version (release) : platform.release(), version()

Les informations sur la version du système d'exploitation (release) sont obtenues à l'aide des fonctions suivantes. Dans les deux cas, la valeur de retour est une chaîne de caractères.

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

Comme le montre l'exemple suivant, platform.release() renvoie un contenu plus simple.

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

Obtenir le système d'exploitation et la version en une seule fois : platform.platform()

Le nom du système d'exploitation et les informations sur la version (release) peuvent être obtenus ensemble en utilisant platform.platform(). La valeur de retour est une chaîne de caractères.

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

Si la valeur de l'argument terse est TRUE, seules des informations minimales seront retournées.

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

Il existe également un argument aliasé.

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

Le résultat est le même dans l'environnement d'exemple, mais certains systèmes d'exploitation renverront un alias comme nom d'OS.

Si aliased est vrai, il renvoie le résultat en utilisant un alias au lieu du nom commun du système. Par exemple, SunOS devient Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Exemples de résultats pour chaque OS

Des exemples de résultats sur macOS, Windows et Ubuntu seront présentés, ainsi que des fonctions spécifiques à chaque système d'exploitation.

macOS

Exemple de résultat sur macOS Mojave 10.14.2. Identique à l'exemple ci-dessus.

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

Notez qu'il s'agit de Darwin, et non de macOS ou Mojave.
Pour plus d'informations sur Darwin, voir la page Wikipedia. Il existe également une description de la correspondance entre le dernier numéro de version et le nom dans macOS.

Il existe une fonction spécifique à madOS appelée platform.mac_ver().
La valeur de retour est renvoyée sous la forme d'un tuple (release, versioninfo, machine).
Dans l'environnement de l'exemple, versioninfo est inconnu et est un tuple de chaîne vide.

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

Windows

Exemple de résultats sur 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

Notez que la valeur de retour 10 de platform.release() est une chaîne de caractères, et non un nombre entier.

Il existe une fonction spécifique à Windows appelée platform.win32_ver().
La valeur de retour est renvoyée sous la forme d'un tuple (release, version, csd, ptype).
csd indique l'état du Service Pack.

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

Ubuntu

Exemple de résultat sur 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

Il existe une fonction spécifique à Unix, platform.linux_distribution().
La valeur de retour est renvoyée sous la forme d'un tuple (distname, version, id).

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

Notez que platform.linux_distribution() a été supprimé dans Python 3.8. Il est recommandé d'utiliser la bibliothèque distro d'une tierce partie à la place, qui doit être installée séparément en utilisant pip.

Exemple de code pour changer de traitement en fonction du système d'exploitation

Si vous voulez changer la fonction ou la méthode à utiliser en fonction du système d'exploitation, vous pouvez utiliser une méthode telle que platform.system() pour déterminer la valeur.

Voici un exemple d'obtention de la date de création d'un fichier.

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

Dans cet exemple, la valeur de platform.system() est d'abord utilisée pour déterminer s'il s'agit de Windows ou autre.
Ensuite, il utilise le traitement des exceptions pour basculer le processus entre le cas où l'attribut st_birthtime existe et les autres cas.