El módulo platform – Información del sistema y ordenador



Versión: Python 2.6+ (para abarcar la totalidad del artículo) y 3.x. En las versiones 2.3, 2.4 y 2.5 se ausenta una parte de las funciones descriptas a continuación.

Como indica el título, el módulo estándar platform provee información a nivel software y hardware; tal como arquitectura, procesador, datos del sistema operativo, la distribución de Python (y sus implementaciones), entre otras más específicas.

La mayor parte de sus funciones son multiplataforma, aunque esto no garantiza su eficacia. Es decir, muchas de las funciones descriptas a continuación suelen retornar cadenas vacías en varias circunstancias, en caso de no haberse concretado satisfactoriamente la operación. También cuenta con funciones específicas, propias de las diversas plataformas como Windows, Mac OS X, Unix y Java.

Hardware

Dentro de las características del hardware se pueden destacar dos funciones: platform.machine() y platform.processor(). En algunas plataformas, la segunda función simplemente es una llamada a la primera, así como también ésta puede retornar una cadena vacía.

platform.machine(): información sobre el procesador, por ejemplo, "AMD64" o "i386".

platform.processor(): similar a platform.machine(), con ciertas variaciones. Según la documentación, retorna el nombre real del procesador, aunque no es así con bastante frecuencia. Por ejemplo, 'amdk6', 'AMD64 Family 21 Model 2 Stepping 0, AuthenticAMD', 'x86_64'.

Dentro de la categoría hardware se puede también englobar platform.architecture(), que retorna una tupla del tipo (bits, vínculo), tomando como base un ejecutable dado por el primer parámetro (el propio intérprete por defecto). Los siguientes parámetros, bits y linkage, serán retornados como elementos de la tupla, respectivamente, en caso de no poder haber obtenido la información necesaria.

Ejemplos:

>>> platform.architecture()  # Windows
('64bit', 'WindowsPE')
>>> platform.architecture()  # Linux
('64bit', 'ELF')

Sin embargo, no te confíes del primer elemento de la tupla, ya que, al basarse en un ejecutable, no determina la arquitectura del procesador (x86 o x64).

Software

Multiplataforma

Como se dijo al comienzo de la entrada, la mayor parte de las funciones pueden ser ejecutadas en las múltiples plataformas. Dichas funciones se constituyen de nombres bastante descriptivos, por lo tanto, ¡qué mejor que algunos ejemplos para mostrar su eficacia!

La mayoría de las siguientes funciones nunca aseguran un único valor de retorno, y en muchos casos retornan cadenas vacías. Como se dijo anteriormente, depende de la plataforma y versión de Python.

Python

# Retorna nombre e información del compilador utilizado para compilar Python.
>>> platform.python_compiler()  # Windows
'MSC v.1600 64 bit (AMD64)'
>>> platform.python_compiler()  # Linux
'GCC 4.6.3'

# Retorna una tupla indicando el número de compilación junto con la fecha
>>> platform.python_build()  # Python 2
('default', 'Nov 10 2013 19:24:24')
>>> platform.python_build()  # Python 3
('v3.3.3:c3896275c0f6', 'Nov 18 2013 21:19:30')

# Nombre de la implementación de Python (por ejemplo, PyPy, IronPython, Stackless)
>>> platform.python_implementation()
'CPython'

CPython es la implementación principal y original del lenguaje escrita en C. Generalmente a ésta se refiere al hablar de Python.

# Retorna el nombre de la ramificación del código de fuente actual (branch)
>>> platform.python_branch()
'v.3.3.3'

# Versión de Python representada como cadena y tupla, respectivamente.
>>> platform.python_version()
'2.7.6'
>>> platform.python_version_tuple()
('2', '7', '6')

La última función es equivalente a tuple(platform.python_version().split(".")).

Sistema

# Nombre del sistema operativo
>>> platform.system()
'Windows'
>>> platform.system()
'Linux'
>>> platform.system()
'Java'

# Modelo o liberación del sistema
>>> platform.release()  # Windows 8
'8'
>>> platform.release()  # Windows XP
'NT'
>>> platform.release()  # Linux
'3.8.0-35-generic'

# Versión del sistema
>>> platform.version()  # Windows
'6.2.9200'
>>> platform.version()  # Linux
'#50~precise1-Ubuntu SMP Wed Dec 4 17:25:51 UTC 2013'

Java

# Información variada
>>> platform.java_ver()
('1.6.0', 'Google Inc.', ('OpenJDK Client VM', '1.6.0', 'Sun Microsystems Inc.'), ('Linux', '', ''))

Generalmente la estructura es la siguiente:

(versión, fabricante/proveedor, (nombre_máquina_virtual, versión_máquina_virtual, fabricante_máquina_virtual), (nombre_sistema, versión_sistema, arquitectura_sistema))

En otras plataformas todos los valores serán cadenas vacías.

Windows

# Información del sistema
>>> platform.win32_ver()
('8', '6.2.9200', '', 'Multiprocessor Free')

Con la siguiente estructura:

(platform.release(), platform.version(), service_pack, tipo_de_procesador)

El tipo de procesador puede ser "Uniprocessor Free" o "Multiprocessor Free" en máquinas monoprocesamiento o multiprocesamiento, respectivamente.

Mac OS

# Información del sistema y máquina
>>> platform.mac_ver()
('10.5.8', ('', '', ''), 'i386')

Con la siguiente estructura:

(liberación, (versión, etapa_de_desarrollo, versión_no_liberada), máquina)

Unix

# Información de la distribución de Linux
>>> platform.linux_distribution()
('Ubuntu', '12.04', 'precise')

Con la estructura:

(nombre_distribución, versión, identificador)

# Versión libc
>>> platform.libc_ver()
('glibc', '2.4')  # (librería, versión)



Deja un comentario