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.
- Súvisiace články:Kontrola a zobrazenie verzie Pythonu (napr. sys.version)
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()
- Získanie informácií o verzii (release): platform.release(), version()
- Získanie operačného systému a verzie naraz: platform.platform()
- Príklady výsledkov pre jednotlivé operačné systémy
- Ukážka kódu na prepínanie spracovania v závislosti od operačného systému
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.