Python – Detectando la plataforma

Objetivo: detectar en Python la plataforma sobre la que se está ejecutando un programa.

Aprender a programar no es una tarea que termina cuando uno conoce ya los rudimentos del lenguaje (estructuras de datos, control del flujo, funciones, etc.). En cierto modo se podría decir que es a partir de ese punto donde empieza la verdadera labor del programador, momento en el cual se sumerge a investigar en la periferia de librerías que orbitan alrededor del lenguaje en sí.

Uso indistintamente los términos biblioteca y librería. Aunque la primera es, estrictamente, la traducción correcta de library, librería es un término ampliamente aceptado por la comunidad de programadores.

Las librerías extienden la funcionalidad del lenguaje y nos acercan al mundo real, a los problemas cotidianos que todo programador debe afrontar. Nos ayudan a no tener que reinventar la rueda. Ponen a nuestro alcance herramientas con código ampliamente demostrado que resuelven problemas concretos. Además, pueden abstraer una determinada realidad ahorrándonos tener que aprender su funcionamiento interno. Por ejemplo, mi propio cliente de Twitter, desarrollado en Python, hace un uso intensivo de la librería de terceros Tweepy, que encapsula el API de Twitter y me evita tener que invertir tiempo aprendiendo sus pormenores.

Su importancia es tal, que muchas veces la decisión de aprender o no un determinado lenguaje viene marcada por la capacidad de poder utilizar las librerías asociadas.

Ese es uno de los motivos por los que recomiendo no casarse con ningún lenguaje y aprender cuantos más mejor: para poder tener acceso a un vasto universo de colecciones de clases, módulos y funciones que de ese modo tendremos a nuestra disposición.

Python, además de contar con un fabuloso conjunto de librerías de terceros, es famoso especialmente por suministrarse pilas incluidas, haciendo mención a la inmensa biblioteca estándar a la que se tiene acceso desde el mismo momento en que se instala Python.

El programa que realizaremos hoy tiene una misión muy simple: reflejar mi opinión sobre qué plataforma es mejor, Linux, Mac o Windows.

Aunque quien ejecute el programa no lo sepa, lo cierto es que esa discusión me trae sin cuidado y las tres me parecen sobresalientes. El programa será diplomático y responderá lo que el usuario quiere oir, que probablemente coincidirá con el sistema operativo desde el cual está trabajando en ese momento.

El módulo sys, disponible en la librería estándar de Python, abstrae muchos de los detalles de la arquitectura subyacente. Entre ellos se encuentra el que buscamos:

sys.platform

Contiene una cadena de caracteres con la plataforma en la que se está ejecutando el programa.

Obsérvalo en acción:

# ¿Qué plataforma es mejor, Linux, Mac o Windows?

import sys

plataforma = sys.platform

if plataforma == 'linux':
    print('Sin lugar a dudas, donde esté el pingüino que se quite todo lo demás')
elif plataforma == 'darwin':   # La firma del Mac
    print('Siempre he sentido simpatía por la manzana, se nota dónde hay calidad')
elif plataforma == 'win32':
    print('Abrid las ventanas, que entre la luz...')
else:    # Para otros sistemas y variantes de Unix
    print('No me gusta ninguno de los tres; ¿coincides conmigo?')

Si lo ejecuto desde el PC desde el que escribo estas líneas, me devuelve:

>>> 
Abrid las ventanas, que entre la luz...

Este código puede presentar problemas si utilizas versiones de Python anteriores a 3.3. En estas, a la respuesta ‘linux‘ se le agregaba un sufijo numérico indicando la versión mayor de kernel, de modo que la comprobación, tal como aparece en el programa, no detectaría la plataforma. En ese caso es mejor que se realice comprobando si comienza por ‘linux‘ en vez de si se produce una coincidencia exacta.

El método startswith, aplicable a una cadena de caracteres, devuelve True si la cadena comienza por los caracteres facilitados como parámetro.

>>> s = 'pradera'
>>> s.startswith('prad')
True

Sustituye, entonces la expresión

plataforma == 'linux'

por

plataforma.startswith('linux')

y la detección se realizará correctamente.

Consulta la documentación de Python y tómate la molestia de revisar lo que el módulo system puede ofrecerte, como saber la versión de Python que se está ejecutando, o el path de búsqueda de módulos.

Y, por lo general, esfuérzate en conocer la biblioteca estándar de Python. Cada módulo que incorpores a tu kit de herramientas te hará subir de nivel como programador.

Javier Montero Gabarró


http://elclubdelautodidacta.es/wp/2013/02/python-detectando-la-plataforma/


El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)


El Club del Autodidacta


Consulta el índice completo de artículos relacionados con Python.

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies