Információk lekérdezése a környezetben futó Python operációs rendszeréről és verziójáról.

Üzleti

A szabványos könyvtár platform modulja arra szolgál, hogy információt kapjon arról az operációs rendszerről, amelyen a Python fut, valamint annak verziójáról (release). Ennek a modulnak a segítségével lehet váltani a folyamatot az egyes operációs rendszerekhez és verziókhoz.

A következő információk itt találhatók.

  • Az operációs rendszer nevének lekérdezése:platform.system()
  • Verziós (kiadási) információk lekérdezése:platform.release(),version()
  • Egyszerre kapja meg az operációs rendszert és a verziót:platform.platform()
  • Példák az egyes operációs rendszerek eredményeihez
    • macOS
    • Windows
    • Ubuntu
  • Minta kód a feldolgozás váltásához az operációs rendszertől függően

Ha tudni szeretné, hogy milyen Python verziót futtat, olvassa el a következő cikket.

Az első részben szereplő összes mintakódot macOS Mojave 10.14.2 operációs rendszeren futtatjuk; a második részben Windows és Ubuntu operációs rendszereken mutattunk be példákat; az operációs rendszer-specifikus funkciókat szintén a második részben tárgyaljuk.

Az operációs rendszer nevének lekérdezése: platform.system()

Az operációs rendszer nevét a platform.system() segítségével kapjuk meg. A visszatérési érték egy karakterlánc.

import platform

print(platform.system())
# Darwin

Verziós (release) információk lekérdezése: platform.release(), version()

Az operációs rendszer verziójára (kiadására) vonatkozó információk a következő funkciókkal szerezhetők be. A visszatérési érték mindkét esetben egy karakterlánc.

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

Ahogy a következő példában látható, a platform.release() egyszerűbb tartalmat ad vissza.

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

OS és verzió egyszerre: platform.platform()

Az operációs rendszer neve és verziója (kiadás) a platform.platform() segítségével együttesen kapható meg. A visszatérési érték egy karakterlánc.

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

Ha a terse argumentum értéke TRUE, akkor csak minimális információ kerül visszaadásra.

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

Van egy aliased érv is.

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

Az eredmény ugyanaz a példakörnyezetben, de egyes operációs rendszerek az operációs rendszer neveként egy alias nevet adnak vissza.

Ha az aliased értéke true, akkor az eredményt a rendszer általános neve helyett egy alias használatával adja vissza. Például a SunOS-ból Solaris lesz.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Példák az egyes operációs rendszerek eredményeihez

Példákat mutatunk a macOS, Windows és Ubuntu rendszereken elért eredményekre, valamint az OS-specifikus funkciókat.

macOS

Példa az eredményre a macOS Mojave 10.14.2 rendszerben. Ugyanaz, mint a fenti példa.

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

Vegye figyelembe, hogy ez Darwin, nem pedig macOS vagy Mojave.
Darwinról bővebben a Wikipédia oldalán olvashat. A legújabb verziószám és a név közötti megfelelésről is van leírás a macOS-ben.

Van egy madOS-specifikus függvény, a platform.mac_ver().
A visszatérési érték egy tuple (release, versioninfo, machine).
A példakörnyezetben a versioninfo ismeretlen, és egy üres karakterlánc-tuple.

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

Windows

Példa az eredményekre Windows 10 Home rendszeren.

print(platform.system())
# Windows

print(platform.release())
# 10

print(platform.version())
# 10.0.17763

print(platform.platform())
# Windows-10-10.0.17763-SP0

Vegyük észre, hogy a platform.release() visszatérési értéke 10 egy karakterlánc, nem pedig egész szám.

Van egy Windows-specifikus függvény, a platform.win32_ver().
A visszatérési érték egy tuple (release, version, csd, ptype).
csd jelzi a szervizcsomag állapotát.

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

Ubuntu

Példa az eredményre Ubuntu 18.04.1 LTS rendszeren.

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

Van egy Unix-specifikus platform.linux_distribution() függvény.
A visszatérési érték egy tuple (distname, version, id).

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

Vegye figyelembe, hogy a platform.linux_distribution() funkciót a Python 3.8-ban eltávolították. Javasoljuk, hogy helyette a harmadik féltől származó könyvtár disztribúciót használjuk, amelyet külön kell telepíteni a pip segítségével.

Minta kód a feldolgozás váltásához az operációs rendszertől függően

Ha a használandó függvényt vagy módszert az operációs rendszertől függően szeretné váltani, akkor egy olyan módszerrel, mint a platform.system(), meghatározhatja az értéket.

A következő példa egy fájl létrehozásának dátumát mutatja be.

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

Ebben a példában először a platform.system() értékét használjuk annak megállapítására, hogy Windows vagy más rendszerről van-e szó.
Ezután kivételkezelést alkalmaz, hogy a folyamatot átkapcsolja az st_birthtime attribútum létezésének esete és a többi eset között.