Få oplysninger om det operativsystem og den version af Python, der kører i miljøet.

Forretning

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.

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.