Python – Acceso a las variables de entorno

Objetivo: mostrar cómo acceder con Python a las variables de entorno del sistema.

En ocasiones puede ser conveniente que nuestros programas o scripts conozcan cierta información sobre el entorno en el que se están ejecutando. Las variables de entorno constituyen un medio ampliamente utilizado para facilitar este tipo de comunicación.

Comencemos agregando algunas variables nuevas a nuestro entorno antes de ejecutar Python:

javier@menta ~ $ export BANDA="Jethro Tull" COMIDA="gazpacho"

Vamos a utilizar el intérprete interactivo de Python para ejecutar código un tanto manipulador y “pelota”, como si se tratase de un falso amigo que finge tus aficiones sólo para obtener algo de ti.

javier@menta ~ $ python3
Python 3.4.0 (default, Apr 11 2014, 13:05:11) 
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Python dispone de un módulo que facilita el acceso a funciones del sistema operativo construyendo una abstracción independiente de la plataforma, favoreciendo así la portabilidad del código. Aunque no puede decirse que esto se consiga en el 100% de los casos, debemos admitir que los resultados son impresionantes. El módulo en cuestión es os, de modo que nuestra primera tarea consiste en traerlo a la palestra:

>>> import os

El hecho simple de importar os hace que tengamos inmediatamente a nuestra disposición un diccionario, os.environ, con una copia de todas las variables de entorno en forma de parejas clave:valor.

Por ejemplo, supongamos que queremos consultar cuál es nuestro directorio de usuario (variable HOME).:

>>> os.environ["HOME"]
'/home/javier'

Naturalmente, también tenemos a nuestra disposición las dos variables que creamos al comienzo:

>>> print("No hay nada mejor en la vida que escuchar un disco
 de {} mientras se saborea un buen {}, 
¿no crees?".format(os.environ["BANDA"], os.environ["COMIDA"]))

No hay nada mejor en la vida que escuchar un disco de Jethro Tull
 mientras se saborea un buen gazpacho, ¿no crees?
>>>

¿Cómo es posible, si son mi banda y comida favoritas!

En las raras ocasiones en las que tu aplicación quiera modificar el entorno, puede ser tentador (y recomendable) atacar directamente al diccionario. Por ejemplo:

>>>os.environ["BANDA"] = "Deep Purple"

Técnicamente hablando, este tipo de actuación sólo estará disponible en aquellas plataformas que permitan llamadas a la función putenv() (que es ejecutada automáticamente cuando se modifica os.environ). Naturalmente, estas alteraciones sólo estarán disponibles para el proceso actual y subprocesos derivados. No esperes que sobrevivan una vez haya finalizado tu aplicación Python.

Javier Montero Gabarró


Python – Acceso a las variables de entorno


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.

4 opiniones en “Python – Acceso a las variables de entorno”

    1. ¡Ya te lo has leído todo!
      Sí, ha llegado el momento de atacar la POO en Python. Me acercaré de un modo conceptual muy semejante al que empleé en Java, aunque hay aspectos que son radicalmente diferentes que seguro sorprenderán a más de uno proveniente de Java, C++ o C#.
      Pero es importante entender que la POO en Python es sólo una opción y con frecuncia no es la mejor en términos de eficiencia de código. Las estructuras de datos nativas en Python son de por sí muy ágiles y, dependiendo del tipo de problema, la diferencia en velocidad de un programa basado en ellas puede ser muy notable respecto al mismo empleando clases.
      Pero, salvando estas cuestiones de rapidez que rara vez necesitaremos, la POO es una obligación para todo programador. Una vez te habitúas a ella, todo lo ves en términos de clases, propiedades y métodos.
      De modo que ha llegado el momento…

  1. Buenas tardes Javier. No termino de entender esto de las variables de entorno. Te agradecería pudieras referirme algun material de lectura para comprenderlo mejor. Tengo dificultades desde la primera linea donde decis que comenzas agregando algunas variables nuevas antes de ejecutar Python (¿Esto lo haces desde que terminal lo haces?)
    Saludos desde Argentina y gracias por la paciencia en las explicaciones.

Deja un comentario