Dobijte informacije o OS -u i verziji Pythona koji se izvodi u okruženju.

Poslovanje

Modul standardne bibliotečke platforme koristi se za dobivanje informacija o operacijskom sustavu na kojem se Python izvodi i njegovoj verziji (izdanju). Pomoću ovog modula moguće je promijeniti proces za svaki OS i verziju.

Ovdje su navedene sljedeće informacije.

  • Dobijte naziv OS -a:platform.system()
  • Dobijte informacije o verziji (izdanju):platform.release(),version()
  • Nabavite OS i verziju odjednom:platform.platform()
  • Primjeri rezultata za svaki OS
    • macOS
    • Windows
    • Ubuntu
  • Uzorak koda za prebacivanje obrade ovisno o OS -u

Ako želite znati koju verziju Pythona koristite, pogledajte sljedeći članak.

Svi uzorci koda u prvoj polovici izvode se na macOS Mojave 10.14.2; primjeri rezultata za Windows i Ubuntu prikazani su u drugoj polovici; O funkcijama specifičnim za OS također se govori u drugoj polovici.

Nabavite naziv OS -a: platform.system ()

Naziv OS -a dobiva platforma.system (). Povratna vrijednost je niz.

import platform

print(platform.system())
# Darwin

Dobijte informacije o verziji (izdanju): platform.release (), version ()

Podaci o verziji OS -a (izdanju) dobivaju se sa sljedećim funkcijama. U oba slučaja, povratna vrijednost je niz.

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

Kao što je prikazano u sljedećem primjeru, platform.release () vraća jednostavnije sadržaje.

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

Nabavite OS i verziju odjednom: platform.platform ()

Podaci o imenu OS -a i verziji (izdanju) mogu se zajedno dobiti pomoću platform.platform (). Povratna vrijednost je niz.

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

Ako je vrijednost argumenta kraće TRUE, bit će vraćeni samo minimalni podaci.

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

Tu je i argument pod pseudonimom.

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

Rezultat je isti u primjeru okruženja, ali neki operacijski sustavi će vratiti pseudonim kao naziv OS -a.

Ako je pseudonim istinit, vraća rezultat koristeći zamjensko ime umjesto uobičajenog naziva sustava. Na primjer, SunOS postaje Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Primjeri rezultata za svaki OS

Prikazat će se primjeri rezultata za macOS, Windows i Ubuntu, kao i funkcije specifične za OS.

macOS

Primjer rezultata na macOS Mojave 10.14.2. Isto kao gornji primjer.

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

Imajte na umu da je to Darwin, a ne macOS ili Mojave.
Više informacija o Darwinu potražite na stranici Wikipedia. Tu je i opis korespondencije između broja najnovije verzije i naziva u macOS -u.

Postoji funkcija specifična za madOS nazvana platform.mac_ver ().
Povratna vrijednost se vraća kao tuple (release, versioninfo, machine).
U primjeru okruženja, versioninfo je nepoznat i prazan je niz naslova.

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

Windows

Primjer rezultata na 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

Imajte na umu da je povratna vrijednost 10 platform.release () niz, a ne cijeli broj.

Postoji funkcija specifična za Windows pod nazivom platform.win32_ver ().
Povratna vrijednost se vraća kao tuple (izdanje, verzija, csd, ptype).
csd označava status servisnog paketa.

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

Ubuntu

Primjer rezultata na 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

Postoji platforma funkcija specifična za Unix.linux_distribution ().
Povratna vrijednost se vraća kao tuple (distname, version, id).

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

Imajte na umu da je platform.linux_distribution () uklonjen u Pythonu 3.8. Umjesto toga preporučuje se korištenje distribucije knjižnice treće strane, koju je potrebno zasebno instalirati pomoću pipa.

Uzorak koda za prebacivanje obrade ovisno o OS -u

Ako želite promijeniti funkciju ili metodu koja će se koristiti ovisno o OS -u, možete koristiti metodu kao što je platform.system () za određivanje vrijednosti.

Slijedi primjer dobivanja datuma stvaranja datoteke.

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

U ovom se primjeru vrijednost platform.system () prvo koristi za utvrđivanje je li riječ o sustavu Windows ili drugom.
Zatim dalje koristi rukovanje iznimkama za prebacivanje procesa između slučaja u kojem postoji atribut st_birthtime i ostalih slučajeva.