Moduł platformy biblioteki standardowej służy do uzyskania informacji o systemie operacyjnym, na którym uruchomiony jest Python, oraz jego wersji (release). Używając tego modułu, możliwe jest przełączenie procesu dla każdego systemu operacyjnego i wersji.
Podane są tu następujące informacje.
- Uzyskaj nazwę systemu operacyjnego:
platform.system()
- Uzyskaj informacje o wersji (wydaniu):
platform.release()
,version()
- Pobierz system operacyjny i wersję za jednym razem:
platform.platform()
- Przykłady wyników dla każdego OS
- macOS
- Windows
- Ubuntu
- Przykładowy kod do przełączania przetwarzania w zależności od systemu operacyjnego
Jeśli chcesz poznać wersję Pythona, z której korzystasz, zobacz poniższy artykuł.
- Powiązane artykuły:Sprawdź i wyświetl wersję Pythona (np. sys.version)
Cały przykładowy kod w pierwszej połowie jest uruchomiony na macOS Mojave 10.14.2; przykładowe wyniki na Windows i Ubuntu są pokazane w drugiej połowie; funkcje specyficzne dla danego systemu operacyjnego są również omówione w drugiej połowie.
- Uzyskaj nazwę systemu operacyjnego: platform.system()
- Pobierz informacje o wersji (release): platforma.release(), version()
- Pobierz system operacyjny i wersję za jednym razem: platform.platform()
- Przykłady wyników dla każdego OS
- Przykładowy kod do przełączania przetwarzania w zależności od systemu operacyjnego
Uzyskaj nazwę systemu operacyjnego: platform.system()
Nazwa systemu operacyjnego jest uzyskiwana przez platform.system(). Wartością zwracaną jest łańcuch znaków.
import platform
print(platform.system())
# Darwin
Pobierz informacje o wersji (release): platforma.release(), version()
Informacje o wersji systemu operacyjnego (release) można uzyskać za pomocą następujących funkcji. W obu przypadkach wartością zwrotną jest łańcuch.
platform.release()
platform.version()
Jak pokazano w poniższym przykładzie, platform.release() zwraca prostszą zawartość.
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
Pobierz system operacyjny i wersję za jednym razem: platform.platform()
Nazwa systemu operacyjnego oraz informacja o wersji (wydaniu) mogą być uzyskane razem przy użyciu funkcji platform.platform(). Wartością zwracaną jest łańcuch znaków.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Jeśli wartość argumentu terse jest TRUE, zwrócona zostanie tylko minimalna informacja.
print(platform.platform(terse=True))
# Darwin-18.2.0
Istnieje również argument aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Wynik jest taki sam w przykładowym środowisku, ale niektóre systemy operacyjne zwrócą alias jako nazwę OS.
Jeśli aliased ma wartość true, zwraca wynik z użyciem aliasu zamiast zwykłej nazwy systemu. Na przykład, SunOS staje się Solarisem.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Przykłady wyników dla każdego OS
Pokazane zostaną przykładowe wyniki na systemach macOS, Windows i Ubuntu, a także funkcje specyficzne dla danego systemu operacyjnego.
macOS
Przykład wyniku na macOS Mojave 10.14.2. Tak samo jak w przykładzie powyżej.
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
Zauważ, że jest to Darwin, a nie macOS czy Mojave.
Więcej informacji o Darwinie można znaleźć na stronie Wikipedii. Znajduje się tam również opis zależności między najnowszym numerem wersji a nazwą w systemie macOS.
Istnieje specyficzna dla systemu madOS funkcja o nazwie platform.mac_ver().
Wartość zwracana jest jako tuple (release, versioninfo, machine).
W przykładowym środowisku, versioninfo jest nieznane i jest pustą tuple string.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Przykładowe wyniki 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
Zauważ, że wartość zwrotna 10 funkcji platform.release() jest łańcuchem znaków, a nie liczbą całkowitą.
Istnieje specyficzna dla systemu Windows funkcja o nazwie platform.win32_ver().
Wartość zwracana jest w postaci tuple (release, version, csd, ptype).
csd wskazuje status dodatku Service Pack.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Przykładowy wynik 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
Istnieje specyficzna dla systemu Unix funkcja platform.linux_distribution().
Wartość zwracana jest w postaci tuple'a (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Zauważ, że platform.linux_distribution() została usunięta w Pythonie 3.8. Zaleca się używanie zamiast tego distro bibliotek stron trzecich, które należy zainstalować osobno za pomocą pip.
Przykładowy kod do przełączania przetwarzania w zależności od systemu operacyjnego
Jeśli chcesz zmienić funkcję lub metodę, która ma być użyta w zależności od systemu operacyjnego, możesz użyć metody takiej jak platform.system() do określenia wartości.
Poniżej znajduje się przykład uzyskania daty utworzenia pliku.
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
W tym przykładzie, wartość platform.system() jest najpierw używana do określenia czy jest to Windows czy inny.
Następnie używa obsługi wyjątków, aby przełączyć proces pomiędzy przypadkiem, w którym atrybut st_birthtime istnieje, a pozostałymi przypadkami.