Pridobite informacije o operacijskem sistemu in različici programa Python, ki se izvaja v okolju.

Posel

Modul platforme standardne knjižnice se uporablja za pridobivanje informacij o operacijskem sistemu, v katerem se izvaja Python, in njegovi različici (izdaji). S tem modulom je mogoče preklopiti proces za vsak operacijski sistem in različico.

Tu so na voljo naslednje informacije.

  • Pridobi ime operacijskega sistema:platform.system()
  • Pridobite informacije o različici (izdaji):platform.release(),version()
  • Pridobite operacijski sistem in različico naenkrat:platform.platform()
  • Primeri rezultatov za vsak operacijski sistem
    • macOS
    • Windows
    • Ubuntu
  • Vzorec kode za preklop obdelave glede na operacijski sistem

Če želite izvedeti različico programa Python, ki jo uporabljate, si oglejte naslednji članek.

Vsa vzorčna koda v prvi polovici je izvedena v operacijskem sistemu macOS Mojave 10.14.2; v drugi polovici so prikazani rezultati v operacijskih sistemih Windows in Ubuntu; v drugi polovici so obravnavane tudi funkcije, specifične za posamezne operacijske sisteme.

Pridobite ime operacijskega sistema: platform.system()

Ime operacijskega sistema se pridobi s funkcijo platform.system(). Vrnjena vrednost je niz.

import platform

print(platform.system())
# Darwin

Pridobite informacije o različici (izdaji): platform.release(), version()

Informacije o različici (izdaji) operacijskega sistema dobite z naslednjimi funkcijami. V obeh primerih je vrnjena vrednost niz.

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

Kot je prikazano v naslednjem primeru, funkcija platform.release() vrne preprostejšo vsebino.

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

Pridobite operacijski sistem in različico naenkrat: platform.platform()

Ime operacijskega sistema in informacije o različici (izdaji) lahko dobite skupaj z uporabo funkcije platform.platform(). Vrnjena vrednost je niz.

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

Če je vrednost argumenta terse TRUE, bodo vrnjene le minimalne informacije.

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

Na voljo je tudi argument aliased.

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

Rezultat je enak v okolju primera, vendar bodo nekateri operacijski sistemi kot ime operacijskega sistema vrnili vzdevek.

Če je vrednost aliased true, vrne rezultat z uporabo vzdevka namesto običajnega imena sistema. Na primer SunOS postane Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Primeri rezultatov za vsak operacijski sistem

Prikazani bodo primeri rezultatov v operacijskih sistemih MacOS, Windows in Ubuntu ter funkcije, specifične za posamezne operacijske sisteme.

macOS

Primer rezultata v sistemu macOS Mojave 10.14.2. Enako kot v zgornjem primeru.

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

Upoštevajte, da je to Darwin in ne macOS ali Mojave.
Za več informacij o Darwinu si oglejte stran v Wikipediji. Na voljo je tudi opis skladnosti med številko zadnje različice in imenom v sistemu macOS.

Za sistem madOS je značilna funkcija platform.mac_ver().
Vrnjena vrednost se vrne kot tuple (release, versioninfo, machine).
V okolju primera je versioninfo neznan in je prazen niz.

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

Windows

Primer rezultatov v operacijskem sistemu 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

Upoštevajte, da je povratna vrednost 10 funkcije platform.release() niz in ne celo število.

Za sistem Windows je na voljo funkcija platform.win32_ver().
Vrnjena vrednost se vrne kot tuple (release, version, csd, ptype).
csd označuje stanje servisnega paketa.

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

Ubuntu

Primer rezultata v Ubuntuju 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

Obstaja funkcija platform.linux_distribution(), specifična za Unix.
Vrnjena vrednost se vrne kot tuple (distname, version, id).

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

Upoštevajte, da je funkcija platform.linux_distribution() v Pythonu 3.8 odstranjena. Namesto tega je priporočljivo uporabiti distribucijo knjižnice tretje osebe, ki jo je treba namestiti ločeno z uporabo pip.

Vzorec kode za preklop obdelave glede na operacijski sistem

Če želite preklopiti funkcijo ali metodo, ki se uporabi glede na operacijski sistem, lahko za določitev vrednosti uporabite metodo, kot je platform.system().

V nadaljevanju je prikazan primer pridobivanja datuma ustvarjanja datoteke.

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

V tem primeru se najprej uporabi vrednost funkcije platform.system(), da se ugotovi, ali gre za sistem Windows ali drug sistem.
Nato z obdelavo izjem preklopi postopek med primerom, v katerem obstaja atribut st_birthtime, in drugimi primeri.