Модулът за платформа на стандартната библиотека се използва за получаване на информация за операционната система, на която работи Python, и нейната версия (release). С помощта на този модул е възможно да се превключи процесът за всяка операционна система и версия.
Тук се предоставя следната информация.
- Получаване на името на операционната система:
platform.system()
- Получаване на информация за версия (издание):
platform.release()
,version()
- Получете операционната система и версията наведнъж:
platform.platform()
- Примери за резултати за всяка операционна система
- macOS
- Windows
- Ubuntu
- Примерен код за превключване на обработката в зависимост от операционната система
Ако искате да научите версията на Python, която използвате, вижте следната статия.
- Свързани статии:Проверка и показване на версията на Python (напр. sys.version)
Всички примерни кодове в първата част са изпълнени на macOS Mojave 10.14.2; във втората част са показани примерни резултати за Windows и Ubuntu; във втората част се обсъждат и специфични за операционната система функции.
- Получаване на името на операционната система: platform.system()
- Получаване на информация за версия (издание): platform.release(), version()
- Получаване на операционна система и версия наведнъж: platform.platform()
- Примери за резултати за всяка операционна система
- Примерен код за превключване на обработката в зависимост от операционната система
Получаване на името на операционната система: platform.system()
Името на операционната система се получава чрез platform.system(). Върнатата стойност е низ.
import platform
print(platform.system())
# Darwin
Получаване на информация за версия (издание): platform.release(), version()
Информацията за версията (версията) на операционната система се получава със следните функции. И в двата случая върнатата стойност е низ.
platform.release()
platform.version()
Както е показано в следващия пример, platform.release() връща по-просто съдържание.
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
Получаване на операционна система и версия наведнъж: platform.platform()
Името на операционната система и информацията за версията (изданието) могат да бъдат получени заедно с помощта на platform.platform(). Върнатата стойност е низ.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Ако стойността на аргумента terse е TRUE, ще бъде върната само минимална информация.
print(platform.platform(terse=True))
# Darwin-18.2.0
Съществува и аргумент aliased.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
Резултатът е същият в примерната среда, но някои операционни системи връщат псевдоним като име на операционната система.
Ако параметърът aliased е true, резултатът се връща, като се използва псевдоним вместо общото име на системата. Например SunOS става Solaris.
platform.platform() – Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Примери за резултати за всяка операционна система
Ще бъдат показани примери за резултати в macOS, Windows и Ubuntu, както и специфични за операционната система функции.
macOS
Пример за резултата в macOS Mojave 10.14.2. Същото като в примера, показан по-горе.
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
Имайте предвид, че става дума за Darwin, а не за macOS или Mojave.
За повече информация относно Дарвин вижте страницата в Уикипедия. Има и описание на съответствието между номера на последната версия и името в macOS.
Съществува специфична за MadOS функция, наречена platform.mac_ver().
Върнатата стойност се връща като кортеж (release, versioninfo, machine).
В примерната среда versioninfo е неизвестна и представлява празен кортеж от низове.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Пример за резултати в 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
Обърнете внимание, че връщаната стойност 10 на platform.release() е низ, а не цяло число.
Съществува специфична за Windows функция, наречена platform.win32_ver().
Върнатата стойност се връща като кортеж (release, version, csd, ptype).
csd показва състоянието на сервизния пакет.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Пример за резултата в 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
Съществува специфична за Unix функция platform.linux_distribution().
Върнатата стойност се връща като кортеж (distname, version, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Обърнете внимание, че функцията platform.linux_distribution() е премахната в Python 3.8. Препоръчва се вместо това да се използва дистрибуция на библиотека от трета страна, която трябва да се инсталира отделно с помощта на pip.
Примерен код за превключване на обработката в зависимост от операционната система
Ако искате да превключите функцията или метода, който ще се използва в зависимост от операционната система, можете да използвате метод като platform.system(), за да определите стойността.
По-долу е даден пример за получаване на датата на създаване на даден файл.
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
В този пример първо се използва стойността на platform.system(), за да се определи дали става дума за Windows или за друга операционна система.
След това се използва обработка на изключения, за да се превключи процесът между случая, в който съществува атрибутът st_birthtime, и останалите случаи.