Få information om operativsystemet och versionen av Python som körs i miljön.

Företag

Standardbibliotekets plattformsmodul används för att få information om operativsystemet som Python körs på och dess version (release). Med hjälp av denna modul är det möjligt att byta process för varje operativsystem och version.

Här finns följande information.

  • Hämta OS-namnet:platform.system()
  • Hämta information om version (release):platform.release(),version()
  • Få OS och version på en gång:platform.platform()
  • Exempel på resultat för varje OS
    • macOS
    • Windows
    • Ubuntu
  • Exempelkod för att byta behandling beroende på operativsystem

Om du vill veta vilken version av Python du använder kan du läsa följande artikel.

All exempelkod i den första halvan körs på macOS Mojave 10.14.2; exempelresultat på Windows och Ubuntu visas i den andra halvan; OS-specifika funktioner diskuteras också i den andra halvan.

Hämta namnet på operativsystemet: platform.system()

OS-namnet erhålls med hjälp av platform.system(). Returvärdet är en sträng.

import platform

print(platform.system())
# Darwin

Hämta information om version (release): platform.release(), version()

Information om OS-versionen (release) erhålls med följande funktioner. I båda fallen är returvärdet en sträng.

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

Som visas i följande exempel returnerar platform.release() ett enklare innehåll.

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

Hämta operativsystem och version på en gång: platform.platform()

Information om operativsystemets namn och version (release) kan erhållas tillsammans med hjälp av platform.platform(). Returvärdet är en sträng.

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

Om värdet av argumentet terse är TRUE returneras endast minimal information.

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

Det finns också ett argument aliased.

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

Resultatet är detsamma i exempelmiljön, men vissa operativsystem returnerar ett alias som OS-namn.

Om aliased är sant returneras resultatet med ett alias i stället för systemets gemensamma namn. SunOS blir till exempel Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Exempel på resultat för varje OS

Exempel på resultat på macOS, Windows och Ubuntu kommer att visas, liksom OS-specifika funktioner.

macOS

Exempel på resultatet på macOS Mojave 10.14.2. Samma som i exemplet ovan.

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

Observera att det är Darwin, inte macOS eller Mojave.
För mer information om Darwin, se Wikipedia-sidan. Det finns också en beskrivning av korrespondensen mellan det senaste versionsnumret och namnet i macOS.

Det finns en madOS-specifik funktion som heter platform.mac_ver().
Returvärdet returneras som en tupel (release, versioninfo, maskin).
I exempelmiljön är versioninfo okänd och är en tom sträng tupel.

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

Windows

Exempel på resultat 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

Observera att returvärdet 10 för platform.release() är en sträng, inte ett heltal.

Det finns en Windows-specifik funktion som heter platform.win32_ver().
Returvärdet returneras som en tupel (release, version, csd, ptype).
csd anger status för servicepaketet.

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

Ubuntu

Exempel 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

Det finns en Unix-specifik funktion platform.linux_distribution().
Returvärdet returneras som en tupel (distname, version, id).

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

Observera att platform.linux_distribution() har tagits bort i Python 3.8. Det rekommenderas att du istället använder tredjepartsbiblioteksdistributionen, som måste installeras separat med pip.

Exempelkod för att byta behandling beroende på operativsystem

Om du vill byta funktion eller metod som ska användas beroende på operativsystemet kan du använda en metod som platform.system() för att bestämma värdet.

Följande är ett exempel på hur du får fram datumet för skapandet av en fil.

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 det här exemplet används först värdet av platform.system() för att avgöra om det är Windows eller något annat.
Därefter används undantagshantering för att växla processen mellan det fall där attributet st_birthtime finns och de andra fallen.

Copied title and URL