Získanie informácií o operačnom systéme a verzii jazyka Python, ktorý beží v prostredí.

obchodné

Modul platformy štandardnej knižnice sa používa na získanie informácií o operačnom systéme, v ktorom je Python spustený, a jeho verzii (release). Pomocou tohto modulu je možné prepínať proces pre jednotlivé operačné systémy a verzie.

Tu sú uvedené tieto informácie.

  • Získajte názov operačného systému:platform.system()
  • Získanie informácií o verzii (vydaní):platform.release(),version()
  • Získajte operačný systém a verziu naraz:platform.platform()
  • Príklady výsledkov pre jednotlivé operačné systémy
    • macOS
    • Windows
    • Ubuntu
  • Ukážka kódu na prepínanie spracovania v závislosti od operačného systému

Ak chcete zistiť verziu Pythonu, ktorú používate, pozrite si nasledujúci článok.

Všetky ukážky kódu v prvej polovici sú spustené v systéme macOS Mojave 10.14.2; v druhej polovici sú uvedené príklady výsledkov v systémoch Windows a Ubuntu; v druhej polovici sú tiež rozoberané funkcie špecifické pre jednotlivé operačné systémy.

Získanie názvu operačného systému: platform.system()

Názov operačného systému sa získava pomocou funkcie platform.system(). Návratová hodnota je reťazec.

import platform

print(platform.system())
# Darwin

Získanie informácií o verzii (release): platform.release(), version()

Informácie o verzii (vydaní) operačného systému sa získavajú pomocou nasledujúcich funkcií. V oboch prípadoch je návratovou hodnotou reťazec.

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

Ako ukazuje nasledujúci príklad, funkcia platform.release() vráti jednoduchší obsah.

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

Získanie operačného systému a verzie naraz: platform.platform()

Informácie o názve a verzii operačného systému (release) možno získať spoločne pomocou funkcie platform.platform(). Návratová hodnota je reťazec.

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

Ak je hodnota argumentu terse TRUE, vrátia sa len minimálne informácie.

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

Existuje aj argument aliased.

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

Výsledok je v príkladovom prostredí rovnaký, ale niektoré operačné systémy vrátia alias ako názov OS.

Ak je hodnota aliased true, vráti výsledok s použitím aliasu namiesto bežného názvu systému. Napríklad SunOS sa zmení na Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Príklady výsledkov pre jednotlivé operačné systémy

Ukážu sa príklady výsledkov v systémoch macOS, Windows a Ubuntu, ako aj funkcie špecifické pre jednotlivé operačné systémy.

macOS

Príklad výsledku v systéme macOS Mojave 10.14.2. Rovnaký ako príklad uvedený vyššie.

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

Všimnite si, že ide o Darwin, nie o macOS alebo Mojave.
Viac informácií o Darwinovi nájdete na stránke Wikipédie. Je tam aj opis zhody medzi číslom najnovšej verzie a názvom v systéme macOS.

Existuje funkcia špecifická pre systém madOS s názvom platform.mac_ver().
Návratová hodnota sa vráti ako tuple (release, versioninfo, machine).
V príkladovom prostredí je versioninfo neznáma a je to prázdny reťazec.

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

Windows

Príklad výsledkov v systéme 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

Všimnite si, že návratová hodnota 10 príkazu platform.release() je reťazec, nie celé číslo.

Existuje funkcia špecifická pre systém Windows s názvom platform.win32_ver().
Návratová hodnota sa vráti ako tuple (release, version, csd, ptype).
csd označuje stav servisného balíka.

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

Ubuntu

Príklad výsledku v 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

Pre systém Unix existuje špecifická funkcia platform.linux_distribution().
Návratová hodnota sa vráti ako tuple (distname, version, id).

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

Všimnite si, že funkcia platform.linux_distribution() bola v Pythone 3.8 odstránená. Namiesto toho sa odporúča používať distribúciu knižnice tretej strany, ktorú je potrebné nainštalovať samostatne pomocou pip.

Ukážka kódu na prepínanie spracovania v závislosti od operačného systému

Ak chcete prepnúť funkciu alebo metódu, ktorá sa má použiť v závislosti od operačného systému, môžete na určenie hodnoty použiť metódu, napríklad platform.system().

Nasleduje príklad získania dátumu vytvorenia súboru.

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 tomto príklade sa najprv použije hodnota funkcie platform.system() na určenie, či ide o systém Windows alebo iný.
Potom ďalej používa spracovanie výnimiek na prepínanie procesu medzi prípadom, keď existuje atribút st_birthtime, a ostatnými prípadmi.

Copied title and URL