Standardbibliotekets plattformsmodul används för att få information om operativsystemet som Python körs på och dess version (release). Med hjälp av denna modul är det möjligt att byta process för varje operativsystem och version.
Här finns följande information.
- Hämta OS-namnet:
platform.system()
- Hämta information om version (release):
platform.release()
,version()
- Få OS och version på en gång:
platform.platform()
- Exempel på resultat för varje OS
- macOS
- Windows
- Ubuntu
- Exempelkod för att byta behandling beroende på operativsystem
Om du vill veta vilken version av Python du använder kan du läsa följande artikel.
- Relaterade artiklar:Kontrollera och visa Python-versionen (t.ex. sys.version).
All exempelkod i den första halvan körs på macOS Mojave 10.14.2; exempelresultat på Windows och Ubuntu visas i den andra halvan; OS-specifika funktioner diskuteras också i den andra halvan.
Hämta namnet på operativsystemet: platform.system()
OS-namnet erhålls med hjälp av platform.system(). Returvärdet är en sträng.
import platform
print(platform.system())
# Darwin
Hämta information om version (release): platform.release(), version()
Information om OS-versionen (release) erhålls med följande funktioner. I båda fallen är returvärdet en sträng.
platform.release()
platform.version()
Som visas i följande exempel returnerar platform.release() ett enklare innehåll.
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
Hämta operativsystem och version på en gång: platform.platform()
Information om operativsystemets namn och version (release) kan erhållas tillsammans med hjälp av platform.platform(). Returvärdet är en sträng.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Om värdet av argumentet terse är TRUE returneras endast minimal information.
print(platform.platform(terse=True))
# Darwin-18.2.0
Det finns också ett argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Resultatet är detsamma i exempelmiljön, men vissa operativsystem returnerar ett alias som OS-namn.
Om aliased är sant returneras resultatet med ett alias i stället för systemets gemensamma namn. SunOS blir till exempel Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Exempel på resultat för varje OS
Exempel på resultat på macOS, Windows och Ubuntu kommer att visas, liksom OS-specifika funktioner.
macOS
Exempel på resultatet på macOS Mojave 10.14.2. Samma som i exemplet ovan.
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
Observera att det är Darwin, inte macOS eller Mojave.
För mer information om Darwin, se Wikipedia-sidan. Det finns också en beskrivning av korrespondensen mellan det senaste versionsnumret och namnet i macOS.
Det finns en madOS-specifik funktion som heter platform.mac_ver().
Returvärdet returneras som en tupel (release, versioninfo, maskin).
I exempelmiljön är versioninfo okänd och är en tom sträng tupel.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Exempel på resultat på 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
Observera att returvärdet 10 för platform.release() är en sträng, inte ett heltal.
Det finns en Windows-specifik funktion som heter platform.win32_ver().
Returvärdet returneras som en tupel (release, version, csd, ptype).
csd anger status för servicepaketet.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Exempel på resultatet på 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
Det finns en Unix-specifik funktion platform.linux_distribution().
Returvärdet returneras som en tupel (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Observera att platform.linux_distribution() har tagits bort i Python 3.8. Det rekommenderas att du istället använder tredjepartsbiblioteksdistributionen, som måste installeras separat med pip.
Exempelkod för att byta behandling beroende på operativsystem
Om du vill byta funktion eller metod som ska användas beroende på operativsystemet kan du använda en metod som platform.system() för att bestämma värdet.
Följande är ett exempel på hur du får fram datumet för skapandet av en fil.
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
I det här exemplet används först värdet av platform.system() för att avgöra om det är Windows eller något annat.
Därefter används undantagshantering för att växla processen mellan det fall där attributet st_birthtime finns och de andra fallen.