Получаване на информация за операционната система и версията на Python, използвана в средата.

Бизнес

Модулът за платформа на стандартната библиотека се използва за получаване на информация за операционната система, на която работи Python, и нейната версия (release). С помощта на този модул е възможно да се превключи процесът за всяка операционна система и версия.

Тук се предоставя следната информация.

  • Получаване на името на операционната система:platform.system()
  • Получаване на информация за версия (издание):platform.release(),version()
  • Получете операционната система и версията наведнъж:platform.platform()
  • Примери за резултати за всяка операционна система
    • macOS
    • Windows
    • Ubuntu
  • Примерен код за превключване на обработката в зависимост от операционната система

Ако искате да научите версията на Python, която използвате, вижте следната статия.

Всички примерни кодове в първата част са изпълнени на macOS Mojave 10.14.2; във втората част са показани примерни резултати за Windows и Ubuntu; във втората част се обсъждат и специфични за операционната система функции.

Получаване на името на операционната система: 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, и останалите случаи.

Copied title and URL