Erhalten Sie Informationen über das Betriebssystem und die Version von Python, die in der Umgebung läuft.

Geschäft

Das Plattformmodul der Standardbibliothek wird verwendet, um Informationen über das Betriebssystem, auf dem Python läuft, und seine Version (Release) zu erhalten. Mit diesem Modul ist es möglich, den Prozess für jedes Betriebssystem und jede Version umzuschalten.

Hier finden Sie die folgenden Informationen.

  • Ermittelt den Namen des Betriebssystems:platform.system()
  • Abrufen von Versionsinformationen (Release):platform.release(),version()
  • Holen Sie sich Betriebssystem und Version auf einmal:platform.platform()
  • Beispiele für Ergebnisse für jedes Betriebssystem
    • macOS
    • Windows
    • Ubuntu
  • Beispielcode zum Umschalten der Verarbeitung je nach Betriebssystem

Wenn Sie wissen wollen, welche Version von Python Sie verwenden, lesen Sie den folgenden Artikel.

Der gesamte Beispielcode in der ersten Hälfte wird unter macOS Mojave 10.14.2 ausgeführt; in der zweiten Hälfte werden Beispielergebnisse unter Windows und Ubuntu gezeigt; betriebssystemspezifische Funktionen werden ebenfalls in der zweiten Hälfte besprochen.

Den Namen des Betriebssystems ermitteln: platform.system()

Der Name des Betriebssystems wird durch platform.system() ermittelt. Der Rückgabewert ist eine Zeichenkette.

import platform

print(platform.system())
# Darwin

Abrufen von Versionsinformationen: platform.release(), version()

Die Informationen über die Betriebssystemversion (Release) werden mit den folgenden Funktionen ermittelt. In beiden Fällen ist der Rückgabewert eine Zeichenkette.

  • platform.release()
  • platform.version()

Wie im folgenden Beispiel gezeigt, gibt platform.release() einfachere Inhalte zurück.

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

Betriebssystem und Version auf einmal abrufen: platform.platform()

Der Name des Betriebssystems und die Versionsinformationen (Release) können mit platform.platform() ermittelt werden. Der Rückgabewert ist eine Zeichenkette.

print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit

Wenn der Wert des Arguments terse TRUE ist, werden nur minimale Informationen zurückgegeben.

print(platform.platform(terse=True))
# Darwin-18.2.0

Es gibt auch ein Argument aliased.

print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit

Das Ergebnis ist dasselbe wie in der Beispielumgebung, aber einige Betriebssysteme geben einen Alias als Betriebssystemnamen zurück.

Wenn aliased true ist, wird das Ergebnis unter Verwendung eines Alias anstelle des allgemeinen Namens des Systems zurückgegeben. Zum Beispiel wird SunOS zu Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Beispiele für Ergebnisse für jedes Betriebssystem

Es werden Beispiele für Ergebnisse unter macOS, Windows und Ubuntu sowie betriebssystemspezifische Funktionen gezeigt.

macOS

Beispiel für das Ergebnis unter macOS Mojave 10.14.2. Dasselbe wie das oben gezeigte Beispiel.

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

Beachten Sie, dass es sich um Darwin handelt, nicht um macOS oder Mojave.
Weitere Informationen über Darwin finden Sie auf der Wikipedia-Seite. Es gibt auch eine Beschreibung der Korrespondenz zwischen der neuesten Versionsnummer und dem Namen in macOS.

Es gibt eine madOS-spezifische Funktion namens platform.mac_ver().
Der Rückgabewert wird in Form eines Tupels (release, versioninfo, machine) zurückgegeben.
In der Beispielumgebung ist versioninfo unbekannt und ein leeres String-Tupel.

print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')

Windows

Beispiel für Ergebnisse unter 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

Beachten Sie, dass der Rückgabewert 10 von platform.release() ein String und keine ganze Zahl ist.

Es gibt eine Windows-spezifische Funktion namens platform.win32_ver().
Der Rückgabewert wird als Tupel (release, version, csd, ptype) zurückgegeben.
csd zeigt den Status des Service Packs an.

print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')

Ubuntu

Beispiel für das Ergebnis auf 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

Es gibt eine Unix-spezifische Funktion platform.linux_distribution().
Der Rückgabewert wird als Tupel (distname, version, id) zurückgegeben.

print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')

Beachten Sie, dass platform.linux_distribution() in Python 3.8 entfernt worden ist. Es wird empfohlen, stattdessen die Bibliotheksdistribution eines Drittanbieters zu verwenden, die separat mit pip installiert werden muss.

Beispielcode zum Umschalten der Verarbeitung je nach Betriebssystem

Wenn Sie die zu verwendende Funktion oder Methode in Abhängigkeit vom Betriebssystem wechseln wollen, können Sie eine Methode wie platform.system() verwenden, um den Wert zu ermitteln.

Nachfolgend ein Beispiel für die Abfrage des Erstellungsdatums einer Datei.

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 diesem Beispiel wird zunächst der Wert von platform.system() verwendet, um festzustellen, ob es sich um Windows oder ein anderes System handelt.
Dann wird mit Hilfe der Ausnahmebehandlung zwischen dem Fall, in dem das Attribut st_birthtime vorhanden ist, und den anderen Fällen unterschieden.