Standardraamatukogu platvormimoodulit kasutatakse selleks, et saada teavet operatsioonisüsteemi kohta, millel Python töötab, ja selle versiooni (release) kohta. Selle mooduli abil on võimalik protsessi iga operatsioonisüsteemi ja versiooni jaoks ümber lülitada.
Siin on esitatud järgmine teave.
- Hangi operatsioonisüsteemi nimi:
platform.system()
- Hankige teavet versiooni (väljalaske) kohta:
platform.release()
,version()
- Hankige kohe operatsioonisüsteem ja versioon:
platform.platform()
- Näited tulemuste kohta iga operatsioonisüsteemi puhul
- macOS
- Windows
- Ubuntu
- Näidiskood töötluse ümberlülitamiseks sõltuvalt operatsioonisüsteemist
Kui soovite teada, millise Pythoni versiooniga te töötate, vaadake järgmist artiklit.
- Seotud artiklid:Pythoni versiooni kontrollimine ja kuvamine (nt sys.version)
Kogu esimeses pooles olev näidiskood on jooksutatud macOS Mojave 10.14.2 peal; teises pooles on näidistulemused Windowsis ja Ubuntus; teises pooles käsitletakse ka operatsioonisüsteemispetsiifilisi funktsioone.
Saada operatsioonisüsteemi nimi: platform.system()
Operatsioonisüsteemi nimi saadakse platform.system() abil. Tagastatav väärtus on string.
import platform
print(platform.system())
# Darwin
Versiooniteabe (release) hankimine: platform.release(), version()
Andmed operatsioonisüsteemi versiooni (versiooni) kohta saadakse järgmiste funktsioonide abil. Mõlemal juhul on tagastusväärtus string.
platform.release()
platform.version()
Nagu järgmises näites näidatud, tagastab platform.release() lihtsama sisu.
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
Saada OS ja versioon korraga: platform.platform()
Operatsioonisüsteemi nime ja versiooni (väljalaske) teavet saab koos kasutades platform.platform(). Tagastatav väärtus on string.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Kui argumendi terse väärtus on TRUE, tagastatakse ainult minimaalne teave.
print(platform.platform(terse=True))
# Darwin-18.2.0
Samuti on olemas argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Tulemus on näidiskeskkonnas sama, kuid mõned operatsioonisüsteemid annavad operatsioonisüsteemi nimena tagasi aliase.
Kui aliased on true, tagastab see tulemuse, kasutades süsteemi ühise nime asemel aliasnime. Näiteks SunOS muutub Solariseks.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Näited tulemuste kohta iga operatsioonisüsteemi puhul
Näidatakse näiteid tulemustest macOS-i, Windowsi ja Ubuntu puhul, samuti näidatakse operatsioonisüsteemispetsiifilisi funktsioone.
macOS
Näide tulemuse kohta macOS Mojave 10.14.2 operatsioonisüsteemis. Sama nagu eespool näidatud näide.
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
Pange tähele, et see on Darwin, mitte macOS või Mojave.
Lisateavet Darwini kohta leiate Vikipeedia leheküljelt. Seal on ka kirjeldus viimase versiooni numbri ja nime vastavusest macOS-is.
On olemas madOS-spetsiifiline funktsioon platform.mac_ver().
Tagastusväärtus tagastatakse tuplina (release, versioninfo, machine).
Näidiskeskkonnas on versioninfo tundmatu ja on tühi string-tupel.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Näide tulemustest Windows 10 Home'is.
print(platform.system())
# Windows
print(platform.release())
# 10
print(platform.version())
# 10.0.17763
print(platform.platform())
# Windows-10-10.0.17763-SP0
Pange tähele, et platform.release() tagastusväärtus 10 on string, mitte täisarv.
On olemas Windows-spetsiifiline funktsioon platform.win32_ver().
Tagastusväärtus tagastatakse tuplina (release, version, csd, ptype).
csd näitab teenusepaketi staatust.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Näide tulemusest Ubuntu 18.04.1 LTS peal.
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 olemas Unix-spetsiifiline funktsioon platform.linux_distribution().
Tagastatav väärtus tagastatakse tuplina (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Pange tähele, et funktsioon platform.linux_distribution() on Python 3.8-st eemaldatud. Selle asemel on soovitatav kasutada kolmanda osapoole raamatukogu distributsiooni, mis tuleb eraldi paigaldada pipi abil.
Näidiskood töötluse ümberlülitamiseks sõltuvalt operatsioonisüsteemist
Kui soovite vahetada kasutatavat funktsiooni või meetodit sõltuvalt operatsioonisüsteemist, võite kasutada väärtuse määramiseks meetodit nagu platform.system().
Järgnevalt on toodud näide faili loomise kuupäeva saamise kohta.
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
Selles näites kasutatakse esmalt platform.system() väärtust, et teha kindlaks, kas tegemist on Windowsi või muu süsteemiga.
Seejärel kasutatakse erandite käsitlemist, et lülitada protsess ümber juhtumi, kus atribuut st_birthtime on olemas, ja muude juhtumite vahel.