Атрымайце інфармацыю аб АС і версіі Python, якія працуюць у асяроддзі.

Бізнэс

Стандартны модуль бібліятэчнай платформы выкарыстоўваецца для атрымання інфармацыі аб аперацыйнай сістэме, на якой працуе Python, і яе версіі (выпуску). Выкарыстоўваючы гэты модуль, можна пераключыць працэс для кожнай АС і версіі.

Тут прадстаўлена наступная інфармацыя.

  • Атрымайце назву АС: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

Калі значэнне аргумента лаканічнае TRUE, будзе вернута толькі мінімальная інфармацыя.

print(platform.platform(terse=True))
# Darwin-18.2.0

Ёсць таксама аргумент псеўданім.

print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit

У прыкладным асяроддзі вынік той жа, але некаторыя аперацыйныя сістэмы вернуць псеўданім як імя АС.

Калі псеўданім праўдзівы, ён вяртае вынік, выкарыстоўваючы псеўданім замест агульнай назвы сістэмы. Напрыклад, 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

Звярніце ўвагу, што гэта Дарвін, а не macOS або Mojave.
Для больш падрабязнай інфармацыі аб Дарвіне наведайце старонку Вікіпедыі. Таксама ёсць апісанне адпаведнасці паміж нумарам апошняй версіі і імем у macOS.

Існуе пэўная функцыя madOS, якая называецца platform.mac_ver ().
Зваротнае значэнне вяртаецца як кортеж (выпуск, versioninfo, машына).
У прыкладным асяроддзі 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 ().
Зваротнае значэнне вяртаецца ў выглядзе кортежа (выпуск, версія, 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 ().
Зваротнае значэнне вяртаецца ў выглядзе корціка (дыстрыбутыў, версія, ідэнтыфікатар).

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, і іншымі выпадкамі.