Отримайте інформацію про ОС та версію 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 невідомий і являє собою порожній кортеж рядків.

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. Linux_distribution ().
Повертається значення повертається як кортеж (distname, версія, id).

print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')

Зауважте, що платформа.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, та іншими випадками.