Obtén información sobre o SO e a versión de Python que se executan no entorno.

Negocios

O módulo de plataforma de biblioteca estándar úsase para obter información sobre o sistema operativo no que está a executar Python e a súa versión (versión). Usando este módulo, é posible cambiar o proceso para cada SO e versión.

A seguinte información ofrécese aquí.

  • Obter o nome do SO:platform.system()
  • Obter información sobre a versión (versión):platform.release(),version()
  • Obtén o SO e a versión á vez:platform.platform()
  • Exemplos de resultados para cada SO
    • macOS
    • Windows
    • Ubuntu
  • Código de mostra para cambiar de procesamento dependendo do SO

Se desexa coñecer a versión de Python que está executando, consulte o seguinte artigo.

Todo o código de mostra na primeira metade execútase en macOS Mojave 10.14.2; os resultados de exemplo en Windows e Ubuntu móstranse na segunda metade; As funcións específicas do sistema operativo tamén se comentan na segunda metade.

Obter o nome do SO: platform.system ()

O nome do SO obtense con platform.system (). O valor devolto é unha cadea.

import platform

print(platform.system())
# Darwin

Obter información sobre a versión (versión): platform.release (), version ()

A información da versión do SO (versión) obtense coas seguintes funcións. En ambos casos, o valor devolto é unha cadea.

  • platform.release()
  • platform.version()

Como se mostra no seguinte exemplo, platform.release () devolve contidos máis sinxelos.

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

Obtén o SO e a versión á vez: platform.platform ()

A información sobre o nome e a versión (versión) do sistema operativo pódense obter xuntos usando platform.platform (). O valor devolto é unha cadea.

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

Se o valor do argumento concreto é TRUE, só se devolverá a información mínima.

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

Tamén hai un argumento alias.

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

O resultado é o mesmo no contorno de exemplo, pero algúns sistemas operativos devolverán un alias como o nome do SO.

Se aliased é verdadeiro, devolve o resultado usando un alias no canto do nome común do sistema. Por exemplo, SunOS convértese en Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation

Exemplos de resultados para cada SO

Mostraranse exemplos de resultados en macOS, Windows e Ubuntu, así como funcións específicas do SO.

macOS

Exemplo do resultado en macOS Mojave 10.14.2. Igual que o exemplo mostrado anteriormente.

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

Teña en conta que é Darwin, non MacOS ou Mojave.
Para obter máis información sobre Darwin, consulte a páxina Wikipedia. Tamén hai unha descrición da correspondencia entre o último número de versión e o nome en macOS.

Hai unha función específica de madOS chamada platform.mac_ver ().
O valor devolto devólvese como tupla (release, versioninfo, máquina).
No ambiente de exemplo, versioninfo é descoñecida e é unha tupla de cadea baleira.

print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')

Windows

Exemplo de resultados en 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

Teña en conta que o valor de retorno 10 de platform.release () é unha cadea, non un número enteiro.

Hai unha función específica de Windows chamada platform.win32_ver ().
O valor devolto devólvese como tupla (versión, versión, csd, ptype).
csd indica o estado do service pack.

print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')

Ubuntu

Exemplo do resultado en 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

Hai unha función específica para Unix platform.linux_distribution ().
O valor devolto devólvese como unha tupla (distname, versión, id).

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

Teña en conta que platform.linux_distribution () foi eliminado en Python 3.8. Recoméndase empregar a distro da biblioteca de terceiros, que debe instalarse por separado mediante pip.

Código de mostra para cambiar de procesamento dependendo do SO

Se desexa cambiar a función ou método a usar dependendo do SO, pode usar un método como platform.system () para determinar o valor.

O seguinte é un exemplo de obtención da data de creación dun ficheiro.

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

Neste exemplo, o valor de platform.system () úsase primeiro para determinar se se trata de Windows ou outro.
Despois, usa ademais o tratamento de excepcións para cambiar o proceso entre o caso onde existe o atributo st_birthtime e os outros casos.

Copied title and URL