Saat tietoja käyttöjärjestelmästä ja ympäristössä käynnissä olevan Pythonin versiosta.

liiketoiminta

Standardikirjaston alustamoduulin avulla saadaan tietoa käyttöjärjestelmästä, jossa Python on käynnissä, ja sen versiosta (julkaisusta). Tämän moduulin avulla on mahdollista vaihtaa prosessi kullekin käyttöjärjestelmälle ja versiolle.

Seuraavat tiedot annetaan tässä.

  • Hae käyttöjärjestelmän nimi:platform.system()
  • Hae version (julkaisun) tiedot:platform.release(),version()
  • Hanki käyttöjärjestelmä ja versio kerralla:platform.platform()
  • Esimerkkejä kunkin käyttöjärjestelmän tuloksista
    • macOS
    • Windows
    • Ubuntu
  • Esimerkkikoodi käsittelyn vaihtamiseksi käyttöjärjestelmästä riippuen

Jos haluat tietää käyttämäsi Python-version, katso seuraava artikkeli.

Ensimmäisen puoliskon kaikki esimerkkikoodit on ajettu macOS Mojave 10.14.2 -käyttöjärjestelmässä; toisessa puoliskossa näytetään esimerkkituloksia Windowsissa ja Ubuntussa; käyttöjärjestelmäkohtaisia toimintoja käsitellään myös toisessa puoliskossa.

Hae käyttöjärjestelmän nimi: platform.system()

Käyttöjärjestelmän nimi saadaan platform.system() -toiminnolla. Paluuarvo on merkkijono.

import platform

print(platform.system())
# Darwin

Versiotietojen (julkaisutietojen) hakeminen: platform.release(), version()

Käyttöjärjestelmän version (julkaisun) tiedot saadaan seuraavilla toiminnoilla. Molemmissa tapauksissa paluuarvo on merkkijono.

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

Kuten seuraavassa esimerkissä näkyy, platform.release() palauttaa yksinkertaisemman sisällön.

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

Hae käyttöjärjestelmä ja versio kerralla: platform.platform()

Käyttöjärjestelmän nimi ja versiotiedot (julkaisu) saadaan yhdessä käyttämällä platform.platform(). Paluuarvo on merkkijono.

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

Jos argumentin terse arvo on TRUE, palautetaan vain minimitiedot.

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

On myös argumentti aliased.

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

Tulos on sama esimerkkiympäristössä, mutta jotkin käyttöjärjestelmät palauttavat aliaksen käyttöjärjestelmän nimeksi.

Jos aliased on true, se palauttaa tuloksen käyttäen aliasta järjestelmän yleisen nimen sijasta. Esimerkiksi SunOS:stä tulee Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Esimerkkejä kunkin käyttöjärjestelmän tuloksista

Näytetään esimerkkejä tuloksista macOS-, Windows- ja Ubuntu-käyttöjärjestelmissä sekä käyttöjärjestelmäkohtaisia toimintoja.

macOS

Esimerkki tuloksesta macOS Mojave 10.14.2 -käyttöjärjestelmässä. Sama kuin edellä esitetty esimerkki.

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

Huomaa, että kyseessä on Darwin, ei macOS tai Mojave.
Lisätietoja Darwinista on Wikipedian sivulla. Siellä on myös kuvaus uusimman versionumeron ja nimen vastaavuudesta macOS:ssä.

On olemassa madOS-kohtainen funktio nimeltä platform.mac_ver().
Paluuarvo palautetaan tuplana (release, versioninfo, machine).
Esimerkkiympäristössä versioninfo on tuntematon ja tyhjä merkkijonotuple.

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

Windows

Esimerkki tuloksista Windows 10 Home -käyttöjärjestelmässä.

print(platform.system())
# Windows

print(platform.release())
# 10

print(platform.version())
# 10.0.17763

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

Huomaa, että platform.release():n paluuarvo 10 on merkkijono, ei kokonaisluku.

On olemassa Windows-kohtainen funktio platform.win32_ver().
Paluuarvo palautetaan tuplana (release, version, csd, ptype).
csd ilmaisee palvelupaketin tilan.

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

Ubuntu

Esimerkki tuloksesta Ubuntu 18.04.1 LTS:ssä.

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

On olemassa Unix-kohtainen funktio platform.linux_distribution().
Paluuarvo palautetaan tuplina (distname, version, id).

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

Huomaa, että platform.linux_distribution() on poistettu Python 3.8:sta. Sen sijaan on suositeltavaa käyttää kolmannen osapuolen kirjastojen jakelua, joka on asennettava erikseen pipin avulla.

Esimerkkikoodi käsittelyn vaihtamiseksi käyttöjärjestelmästä riippuen

Jos haluat vaihtaa käytettävää funktiota tai menetelmää käyttöjärjestelmän mukaan, voit käyttää menetelmää platform.system() arvon määrittämiseen.

Seuraavassa on esimerkki tiedoston luontipäivämäärän saamisesta.

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

Tässä esimerkissä käytetään ensin platform.system():n arvoa sen määrittämiseksi, onko kyseessä Windows vai jokin muu.
Tämän jälkeen se käyttää poikkeusten käsittelyä vaihtaakseen prosessin sen tapauksen, jossa attribuutti st_birthtime on olemassa, ja muiden tapausten välillä.