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.
- Artigos relacionados:Comprobe e amose a versión de Python (por exemplo, sys.version)
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.