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.
- Aiheeseen liittyvät artikkelit:Python-version tarkistaminen ja näyttäminen (esim. sys.version)
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ä.