Standardbibliotekets platformsmodul bruges til at få oplysninger om det operativsystem, som Python kører på, og dets version (release). Ved hjælp af dette modul er det muligt at skifte processen for hvert operativsystem og hver version.
Her findes følgende oplysninger.
- Hent OS-navnet:
platform.system()
- Hent oplysninger om version (udgivelse):
platform.release()
,version()
- Få OS og version med det samme:
platform.platform()
- Eksempler på resultater for hvert operativsystem
- macOS
- Windows
- Ubuntu
- Kodeeksempel til at skifte behandling afhængigt af OS
Hvis du vil vide, hvilken version af Python du kører, kan du læse følgende artikel.
- Relaterede artikler:Kontroller og vis Python-versionen (f.eks. sys.version)
Alle kodeeksempler i første halvdel er kørt på macOS Mojave 10.14.2. Eksempelresultater på Windows og Ubuntu vises i anden halvdel; OS-specifikke funktioner diskuteres også i anden halvdel.
Hent navnet på operativsystemet: platform.system()
Navnet på operativsystemet fås ved hjælp af platform.system(). Den returnerede værdi er en streng.
import platform
print(platform.system())
# Darwin
Hent oplysninger om version (udgivelse): platform.release(), version()
Oplysningerne om OS-versionen (udgivelsen) fås med følgende funktioner. I begge tilfælde er den returnerede værdi en streng.
platform.release()
platform.version()
Som vist i det følgende eksempel returnerer platform.release() et enklere indhold.
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
Få OS og version på én gang: platform.platform()
OS-navnet og oplysninger om version (udgivelse) kan fås sammen ved hjælp af platform.platform(). Den returnerede værdi er en streng.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Hvis værdien af argumentet terse er TRUE, returneres der kun minimale oplysninger.
print(platform.platform(terse=True))
# Darwin-18.2.0
Der er også et argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Resultatet er det samme i eksempelmiljøet, men nogle operativsystemer returnerer et alias som OS-navn.
Hvis aliased er sandt, returneres resultatet med et alias i stedet for systemets fælles navn. SunOS bliver f.eks. til Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Eksempler på resultater for hvert operativsystem
Der vil blive vist eksempler på resultater på macOS, Windows og Ubuntu samt OS-specifikke funktioner.
macOS
Eksempel på resultatet på macOS Mojave 10.14.2. Samme som i eksemplet vist ovenfor.
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
Bemærk, at det er Darwin, ikke macOS eller Mojave.
Du kan finde flere oplysninger om Darwin på Wikipedias side. Der er også en beskrivelse af korrespondancen mellem det seneste versionsnummer og navnet i macOS.
Der findes en madOS-specifik funktion kaldet platform.mac_ver().
Den returnerede værdi returneres som en tupel (release, versioninfo, maskine).
I eksempelmiljøet er versioninfo ukendt og er en tom string-tupel.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Eksempel på resultater på 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
Bemærk, at returværdien 10 af platform.release() er en streng og ikke et heltal.
Der findes en Windows-specifik funktion kaldet platform.win32_ver().
Den returnerede værdi returneres som en tupel (release, version, csd, ptype).
csd angiver status for servicepakken.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Eksempel på resultatet på 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
Der findes en Unix-specifik funktion platform.linux_distribution().
Den returnerede værdi returneres som en tupel (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Bemærk, at platform.linux_distribution() er blevet fjernet i Python 3.8. Det anbefales at bruge tredjepartsbiblioteksdistributionen i stedet, som skal installeres separat ved hjælp af pip.
Kodeeksempel til at skifte behandling afhængigt af OS
Hvis du ønsker at skifte den funktion eller metode, der skal bruges afhængigt af operativsystemet, kan du bruge en metode som platform.system() til at bestemme værdien.
Følgende er et eksempel på, hvordan du kan få en fils oprettelsesdato.
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
I dette eksempel bruges værdien af platform.system() først til at afgøre, om der er tale om Windows eller andet.
Derefter bruger den yderligere undtagelsesbehandling til at skifte processen mellem det tilfælde, hvor attributten st_birthtime findes, og de andre tilfælde.