Modul platformy standardní knihovny slouží k získání informací o operačním systému, na kterém je Python spuštěn, a jeho verzi (release). Pomocí tohoto modulu je možné přepínat proces pro jednotlivé operační systémy a verze.
Zde jsou uvedeny následující informace.
- Získat název operačního systému:
platform.system()
- Získat informace o verzi (vydání):
platform.release()
,version()
- Získejte operační systém a verzi najednou:
platform.platform()
- Příklady výsledků pro jednotlivé operační systémy
- macOS
- Windows
- Ubuntu
- Ukázka kódu pro přepínání zpracování v závislosti na operačním systému
Pokud chcete zjistit, jakou verzi Pythonu používáte, podívejte se do následujícího článku.
- Související články:Kontrola a zobrazení verze Pythonu (např. sys.version)
Veškerý ukázkový kód v první polovině je spuštěn v systému macOS Mojave 10.14.2; v druhé polovině jsou uvedeny příklady výsledků v systémech Windows a Ubuntu; v druhé polovině jsou také probrány funkce specifické pro daný operační systém.
- Zjištění názvu operačního systému: platform.system()
- Získání informací o verzi (vydání): platform.release(), version()
- Získání operačního systému a verze najednou: platform.platform()
- Příklady výsledků pro jednotlivé operační systémy
- Ukázka kódu pro přepínání zpracování v závislosti na operačním systému
Zjištění názvu operačního systému: platform.system()
Název operačního systému se získá pomocí funkce platform.system(). Návratovou hodnotou je řetězec.
import platform
print(platform.system())
# Darwin
Získání informací o verzi (vydání): platform.release(), version()
Informace o verzi (vydání) operačního systému se získávají pomocí následujících funkcí. V obou případech je návratovou hodnotou řetězec.
platform.release()
platform.version()
Jak ukazuje následující příklad, funkce platform.release() vrací jednodušší 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ískání operačního systému a verze najednou: platform.platform()
Informace o názvu a verzi operačního systému (release) lze získat společně pomocí funkce platform.platform(). Návratovou hodnotou je řetězec.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Pokud je hodnota argumentu terse TRUE, budou vráceny pouze minimální informace.
print(platform.platform(terse=True))
# Darwin-18.2.0
K dispozici je také argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Výsledek je v příkladovém prostředí stejný, ale některé operační systémy vrátí jako název operačního systému alias.
Pokud je hodnota aliased true, vrátí výsledek s použitím aliasu namísto běžného názvu systému. Například ze systému SunOS se stane Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Příklady výsledků pro jednotlivé operační systémy
Ukážeme si příklady výsledků v systémech MacOS, Windows a Ubuntu a také funkce specifické pro daný operační systém.
macOS
Příklad výsledku v systému macOS Mojave 10.14.2. Stejný jako výše uvedený příklad.
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šimněte si, že se jedná o Darwin, nikoli o macOS nebo Mojave.
Další informace o Darwinovi najdete na stránce Wikipedie. Tam je také popsána shoda mezi číslem nejnovější verze a názvem v systému macOS.
Pro systém madOS existuje specifická funkce platform.mac_ver().
Návratová hodnota je vrácena jako tuple (release, versioninfo, machine).
V příkladovém prostředí je versioninfo neznámé a je to prázdný řetězcový tuple.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Příklad výsledků v systému 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šimněte si, že návratová hodnota 10 funkce platform.release() je řetězec, nikoli celé číslo.
Pro systém Windows existuje specifická funkce platform.win32_ver().
Návratová hodnota je vrácena jako tuple (release, version, csd, ptype).
csd označuje stav servisního balíčku.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Pří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
Pro systém Unix existuje specifická funkce platform.linux_distribution().
Návratová hodnota je vrácena jako tuple (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Všimněte si, že funkce platform.linux_distribution() byla v Pythonu 3.8 odstraněna. Místo toho se doporučuje používat distribuci knihovny třetí strany, kterou je třeba nainstalovat samostatně pomocí pip.
Ukázka kódu pro přepínání zpracování v závislosti na operačním systému
Pokud chcete přepnout funkci nebo metodu, která se má použít v závislosti na operačním systému, můžete k určení hodnoty použít metodu, jako je platform.system().
Následuje příklad získání data vytvoření souboru.
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 příkladu je nejprve pomocí hodnoty platform.system() určeno, zda se jedná o systém Windows nebo jiný.
Dále pak pomocí zpracování výjimek přepíná proces mezi případem, kdy existuje atribut st_birthtime, a ostatními případy.