O módulo de plataforma de biblioteca padrão é utilizado para obter informações sobre o sistema operativo em que Python está a funcionar e a sua versão (lançamento). Usando este módulo, é possível mudar o processo para cada sistema operativo e versão.
A seguinte informação é fornecida aqui.
- Obter o nome do SO:
platform.system()
- Obter informações sobre a versão (lançamento):
platform.release()
,version()
- Obtenha o SO e a versão de uma só vez:
platform.platform()
- Exemplos de resultados para cada OS
- macOS
- Windows
- Ubuntu
- Código de amostra para mudar o processamento dependendo do SO
Se quiser saber a versão do Python que está a executar, veja o artigo seguinte.
- Artigos relacionados:Verificar e exibir a versão Python (por exemplo, sys.version)
Todo o código de amostra na primeira metade é executado em macOS Mojave 10.14.2; resultados de exemplo em Windows e Ubuntu são mostrados na segunda metade; funções específicas de SO são também discutidas na segunda metade.
Obter o nome do SO: platform.system()
O nome do SO é obtido por platform.system(). O valor de retorno é uma cadeia.
import platform
print(platform.system())
# Darwin
Obter informação da versão (lançamento): platform.release(), versão()
A versão do SO (lançamento) é obtida com as seguintes funções. Em ambos os casos, o valor de retorno é uma cadeia.
platform.release()
platform.version()
Como se mostra no exemplo seguinte, platform.release() devolve conteúdos mais simples.
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
Obtenha o SO e a versão de uma só vez: platform.platform()
O nome e a versão (lançamento) do SO podem ser obtidos em conjunto usando platform.platform(). O valor de retorno é uma string.
print(platform.platform())
# Darwin-18.2.0-x86_64-i386-64bit
Se o valor do argumento for VERDADEIRO, apenas será devolvida informação mínima.
print(platform.platform(terse=True))
# Darwin-18.2.0
Há também um argumento semelhante.
print(platform.platform(aliased=True))
# Darwin-18.2.0-x86_64-i386-64bit
O resultado é o mesmo no ambiente do exemplo, mas alguns sistemas operacionais devolverão um pseudónimo como o nome do SO.
Se o alias for verdadeiro, devolve o resultado utilizando um alias em vez do nome comum do sistema. Por exemplo, o SunOS torna-se Solaris.
platform.platform() — Access to underlying platform’s identifying data — Python 3.10.0 Documentation
Exemplos de resultados para cada OS
Serão mostrados exemplos de resultados em macOS, Windows, e Ubuntu, bem como funções específicas de SO.
macOS
Exemplo do resultado em macOS Mojave 10.14.2. O mesmo que o exemplo mostrado acima.
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
Note-se que é Darwin, e não MacOS ou Mojave.
Para mais informações sobre Darwin, ver a página da Wikipedia. Há também uma descrição da correspondência entre o número da última versão e o nome em macOS.
Existe uma função específica do madOS chamada platform.mac_ver().
O valor de retorno é devolvido como um tuple (release, versioninfo, máquina).
No ambiente do exemplo, a versãoinfo é desconhecida e é um tuple de cordel vazio.
print(platform.mac_ver())
# ('10.14.2', ('', '', ''), 'x86_64')
Windows
Exemplo de resultados no 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
Note-se que o valor de retorno 10 de platform.release() é uma string, não um número inteiro.
Existe uma função específica do Windows chamada platform.win32_ver().
O valor de retorno é devolvido como um tuple (lançamento, versão, csd, ptype).
csd indica o estado do pacote de serviços.
print(platform.win32_ver())
# ('10', '10.0.17763', 'SP0', 'Multiprocessor Free')
Ubuntu
Exemplo do resultado no 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
Existe uma plataforma de funções específica para Unix.linux_distribution().
O valor de retorno é devolvido como um tuple (distname, versão, id).
print(platform.linux_distribution())
# ('Ubuntu', '18.04', 'bionic')
Note-se que platform.linux_distribution() foi removida em Python 3.8. Recomenda-se a utilização da distro biblioteca de terceiros, que necessita de ser instalada separadamente usando pip.
Código de amostra para mudar o processamento dependendo do SO
Se quiser mudar a função ou método a ser usado dependendo do SO, pode usar um método como platform.system() para determinar o valor.
O seguinte é um exemplo da obtenção da data de criação de um 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() é primeiro utilizado para determinar se é Windows ou outro.
Depois, utiliza ainda o tratamento de excepções para mudar o processo entre o caso em que o atributo st_birthtime existe e os outros casos.