Verkrijg informatie over het besturingssysteem en de versie van Python die in de omgeving draait.

Bedrijf

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.

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.

Copied title and URL