De platformmodule van de standaardbibliotheek wordt gebruikt om informatie te verkrijgen over het besturingssysteem waarop Python draait en de versie (release) daarvan. Met behulp van deze module is het mogelijk om het proces voor elk OS en versie om te schakelen.
De volgende informatie wordt hier verstrekt.
- Vraag de naam van het besturingssysteem op:
platform.system()
- Verkrijg versie (release) informatie:
platform.release()
,version()
- Haal OS en versie in een keer:
platform.platform()
- Voorbeelden van resultaten voor elk OS
- macOS
- Windows
- Ubuntu
- Voorbeeldcode om verwerking om te schakelen afhankelijk van OS
Als u wilt weten welke versie van Python u gebruikt, zie het volgende artikel.
- Verwante Artikelen:Controleer en toon de Python versie (b.v. sys.version)
Alle voorbeeldcode in de eerste helft is uitgevoerd op macOS Mojave 10.14.2; voorbeeldresultaten op Windows en Ubuntu worden getoond in de tweede helft; OS-specifieke functies worden ook besproken in de tweede helft.
Verkrijg de naam van het besturingssysteem: platform.system()
De OS-naam wordt verkregen door platform.system(). De return waarde is een string.
import platform
print(platform.system())
# Darwin
Verkrijg versie (release) informatie: platform.release(), versie()
De OS versie (release) informatie wordt verkregen met de volgende functies. In beide gevallen is de returnwaarde een string.
platform.release()
platform.version()
Zoals in het volgende voorbeeld, platform.release() geeft eenvoudiger inhoud terug.
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
Haal OS en versie in één keer op: platform.platform()
De OS-naam en versie (release) informatie kan samen worden verkregen met platform.platform(). De return waarde is een string.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Als de waarde van het argument terse TRUE is, wordt slechts minimale informatie teruggegeven.
print(platform.platform(terse=True))
# Darwin-18.2.0
Er is ook een argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Het resultaat is hetzelfde in de voorbeeldomgeving, maar sommige besturingssystemen zullen een alias teruggeven als de OS-naam.
Als aliased waar is, geeft het het resultaat met een alias in plaats van de gewone naam van het systeem. Bijvoorbeeld, SunOS wordt Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Voorbeelden van resultaten voor elk OS
Voorbeelden van resultaten op macOS, Windows, en Ubuntu zullen worden getoond, evenals OS-specifieke functies.
macOS
Voorbeeld van het resultaat op macOS Mojave 10.14.2. Hetzelfde als het voorbeeld hierboven.
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
Merk op dat het Darwin is, niet macOS of Mojave.
Voor meer informatie over Darwin, zie de Wikipedia pagina. Er is ook een beschrijving van de overeenkomst tussen het laatste versienummer en de naam in macOS.
Er is een madOS-specifieke functie genaamd platform.mac_ver().
De retourwaarde wordt geretourneerd als een tupel (release, versioninfo, machine).
In de voorbeeldomgeving is versie-info onbekend en is een lege string tuple.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Voorbeeld van resultaten op 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
Merk op dat de return waarde 10 van platform.release() een string is, geen integer.
Er is een Windows-specifieke functie genaamd platform.win32_ver().
De terugkeerwaarde wordt teruggegeven als een tupel (release, versie, csd, ptype).
csd geeft de status van het servicepack aan.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Voorbeeld van het resultaat op 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
Er is een Unix-specifieke functie platform.linux_distribution().
De terugkeerwaarde wordt geretourneerd als een tupel (distnaam, versie, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Merk op dat platform.linux_distribution() is verwijderd in Python 3.8. Het wordt aanbevolen om in plaats daarvan de bibliotheekdistro van derden te gebruiken, die apart moet worden geïnstalleerd met pip.
Voorbeeldcode om verwerking om te schakelen afhankelijk van OS
Als je de te gebruiken functie of methode wilt laten afhangen van het OS, kun je een methode als platform.system() gebruiken om de waarde te bepalen.
Het volgende is een voorbeeld van het verkrijgen van de aanmaakdatum van een bestand.
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
In dit voorbeeld wordt eerst de waarde van platform.system() gebruikt om te bepalen of het Windows is of iets anders.
Vervolgens gebruikt het verder uitzonderingsafhandeling om het proces te schakelen tussen het geval waarin het st_birthtime attribuut bestaat en de andere gevallen.