
Vous pouvez obtenir le système d’exploitation et sa version finale de l’environnement dans lequel Python s’exécute avec la plate-forme de bibliothèque standard.
Par plate-forme, il est possible de basculer le fonctionnement en fonction de l’OS et de la version.
Cet article décrit le contenu suivant :
- Obtenez le nom du système/OS :
platform.system() - Obtenez la version finale du système :
platform.release(), version() - Rassemblez le système d’exploitation, la version, etc. :
platform.platform() - Exemples pour chaque système d’exploitation
- Exemple de code qui change de fonctionnement en fonction du système d’exploitation
Consultez l’article suivant pour savoir comment obtenir la version de Python.
Tous les exemples de code de la première moitié ont été exécutés sur macOS Mojave 10.14.2. Des exemples de résultats sur Windows et Ubuntu sont présentés plus loin. Les fonctions spécifiques au système d’exploitation seront également décrites ultérieurement.
Obtenez le nom du système/OS :platform.system()
platform.system() renvoie le nom du système/système d’exploitation sous forme de chaîne.
import platform
print(platform.system())
# Darwin
Obtenez la version finale du système :platform.release(), version()
platform.release() et platform.version() renvoient la version du système sous forme de chaîne.
Comme le montre l’exemple ci-dessous, 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
Rassemblez le système d’exploitation, la version, etc. :platform.platform()
platform.platform() renvoie une chaîne contenant le nom du système d’exploitation, les informations de version, etc.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Si terse vaut True, seules des informations minimales sont renvoyées.
print(platform.platform(terse=True))
# Darwin-18.2.0
Il y a aussi 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’exemple ci-dessus, mais selon le système d’exploitation, l’alias est renvoyé comme nom du système d’exploitation.
Si aliased est vrai, la fonction utilisera des alias pour diverses plates-formes qui signalent des noms de système qui diffèrent de leurs noms communs, par exemple SunOS sera signalé comme Solaris.
platform.platform() — Accès aux données d’identification de la plateforme sous-jacente — Documentation Python 3.9.1
Exemples pour chaque système d’exploitation
Des exemples de résultats exécutés sur macOS, Windows et Ubuntu sont présentés ci-dessous, ainsi que des fonctions spécifiques au système d’exploitation.
macOS
Pour 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 que le nom du système d’exploitation est Darwin, pas macOS ou Mojave. Voir Wikipedia pour le numéro de version correspondant au nom dans macOS.
platform.mac_ver() est une fonction spécifique à macOS qui renvoie un tuple (release, versioninfo, machine).
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
les fenêtres
Pour Windows 10 Famille :
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 et non un entier.
platform.win32_ver() est une fonction spécifique à Windows qui renvoie un tuple (release, version, csd, ptype).
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
platform.win32_edition(), qui renvoie l’édition Windows sous forme de chaîne, et platform.win32_is_iot(), qui renvoie True pour l’édition IoT, ont été ajoutés dans Python 3.8.
Ubuntu
Pour 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
platform.linux_distribution() est une fonction spécifique à Unix qui renvoie un tuple (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Notez que cette fonction a été supprimée dans Python 3.8. Il est recommandé d’utiliser à la place la distribution de la bibliothèque tierce.
Exemple de code qui change de fonctionnement en fonction du système d’exploitation
Par exemple, en utilisant platform.system(), l’opération peut être modifiée en fonction du système d’exploitation.
Exemple d’obtention de la date et de l’heure 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 utilisée pour déterminer s’il s’agit de Windows ou non, puis la gestion des exceptions est utilisée pour basculer l’opération en fonction de l’existence ou non de l’attribut st_birthtime.
Consultez l’article suivant pour la gestion des exceptions.
