Gestión de Configuraciones con ConfigParser en Python

Gestión de Configuraciones con ConfigParser en Python

En este tutorial aprenderemos a utilizar la biblioteca ConfigParser de Python para leer y escribir archivos de configuración en formato INI. Los archivos de configuración son un recurso esencial para aplicaciones de software, ya que permiten a los usuarios personalizar el comportamiento de la aplicación.

Instalación

La biblioteca ConfigParser forma parte de la biblioteca estándar de Python, por lo que no es necesario instalarla. Sin embargo, si queremos utilizar la última versión, podemos instalarla con el siguiente comando:

pip install configparser

Estructura de archivos INI

Los archivos de configuración en formato INI consisten en una serie de secciones, cada una de las cuales contiene una serie de opciones. Las secciones se identifican con un encabezado en forma de corchete cuadrado, seguido del nombre de la sección. Las opciones se identifican con un nombre de opción seguido de un signo igual (=) y el valor de la opción.

Por ejemplo, el siguiente archivo de configuración define dos secciones:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = hg

La primera sección, DEFAULT, contiene las opciones de configuración globales. La segunda sección, bitbucket.org, contiene las opciones de configuración específicas para el servidor Bitbucket.

Lectura de archivos de configuración

Para leer un archivo de configuración con ConfigParser, utilizamos el método read(). Este método toma el nombre del archivo de configuración como argumento.

Python
import configparser

config = configparser.ConfigParser()
config.read("config.ini")

Una vez que hemos leído el archivo de configuración, podemos acceder a las secciones y opciones utilizando los métodos sections() y options().

Python
print(config.sections())
# ['DEFAULT', 'bitbucket.org']

print(config.options("bitbucket.org"))
# ['User']

También podemos acceder a los valores de las opciones utilizando los métodos get() y getint().

Python
print(config.get("DEFAULT", "ServerAliveInterval"))
# 45

print(config.getint("DEFAULT", "CompressionLevel"))
# 9

Escritura de archivos de configuración

Para escribir un archivo de configuración con ConfigParser, utilizamos el método write(). Este método toma un objeto io.TextIOBase como argumento.

Python
config = configparser.ConfigParser()
config["DEFAULT"] = {"ServerAliveInterval": "45", "Compression": "yes", "CompressionLevel": "9", "ForwardX11": "yes"}
config["bitbucket.org"] = {"User": "hg"}

with open("config.ini", "w") as f:
    config.write(f)

Este código creará un archivo de configuración con el mismo contenido que el ejemplo anterior.

Interpolación de valores

ConfigParser también admite la interpolación de valores. Esto nos permite utilizar variables de entorno o valores calculados en los valores de las opciones.

La sintaxis para la interpolación de valores es la siguiente:

${variable}

Por ejemplo, el siguiente archivo de configuración utiliza la interpolación de valores para leer el nombre de usuario del sistema operativo:

[DEFAULT]
ServerAliveInterval = 45
Compression = yes
CompressionLevel = 9
ForwardX11 = yes

[bitbucket.org]
User = ${USER}

Este código leerá el nombre de usuario del sistema operativo y lo asignará a la opción User de la sección bitbucket.org.

Conclusión

ConfigParser es una herramienta útil para la gestión de configuraciones en Python. Es fácil de usar y admite una amplia gama de funciones.