Leer y escribir archivos INI en Python

Vaibhav Vaibhav 14 abril 2022
Leer y escribir archivos INI en Python

Un archivo INI es un archivo de configuración para software de computadora.

Contiene pares clave-valor que representan propiedades y sus valores. Estos pares clave-valor están organizados en secciones.

Un archivo INI tiene .ini como extensión. Microsoft Windows y las aplicaciones basadas en Microsoft Windows utilizan un archivo INI, y el software utiliza archivos INI para almacenar su configuración.

Python es un lenguaje de programación robusto y versátil que puede crear aplicaciones de escritorio. Dado que las aplicaciones de escritorio incluyen aplicaciones y software basados ​​en Microsoft Windows, los desarrolladores de Python deben usar archivos INI para almacenar configuraciones y leerlas cuando sea necesario.

Este artículo enseñará cómo leer y escribir archivos INI usando Python.

Leer y escribir el archivo INI en Python

Para leer y escribir archivos INI, podemos usar el módulo configparser. Este módulo es parte de la biblioteca estándar de Python y está diseñado para administrar archivos INI que se encuentran en Microsoft Windows.

Este módulo tiene una clase ConfigParser que contiene todas las utilidades para jugar con archivos INI. Podemos usar este módulo para nuestro caso de uso.

Comprendamos el uso de esta biblioteca con la ayuda de un ejemplo simple. Consulte el siguiente código de Python para esto.

import configparser

filename = "file.ini"

# Writing Data
config = configparser.ConfigParser()
config.read(filename)

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

with open(filename, "w") as config_file:
    config.write(config_file)

# Reading Data
config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

Producción :

time: utc
time_format: 24h
language: english
testing: false
production: true

Explicación del código Python

El script de Python primero crea un objeto de la clase ConfigParser y lee el archivo INI especificado por el filename. No habrá problemas si el archivo no existe en la ruta especificada.

try:
    config.add_section("SETTINGS")
except configparser.DuplicateSectionError:
    pass

A continuación, intenta crear una sección SETTINGS en el fichero INI utilizando el método add_section().

El método add_section() lanza una excepción configparser.DuplicateSectionError cuando la sección ya existe en el fichero INI. Por eso la llamada a la función está rodeada de bloques try y except.

config.set("SETTINGS", "time", "utc")
config.set("SETTINGS", "time_format", "24h")
config.set("SETTINGS", "language", "english")
config.set("SETTINGS", "testing", "false")
config.set("SETTINGS", "production", "true")

A continuación, utilizando la función set(), escribimos datos en el archivo INI.

La función set() exige tres argumentos, a saber, section, option y value. Esto significa que se agregará un par clave-valor debajo de la section, donde la clave es la option y el valor es el value.

El script de Python anterior agrega 5 tales pares.

with open(filename, "w") as config_file:
    config.write(config_file)

A continuación, se abre el archivo INI, se escriben datos en él mediante el método write() de la biblioteca configparser y, por último, se guardan.

config.read(filename)
keys = ["time", "time_format", "language", "testing", "production"]
for key in keys:
    try:
        value = config.get("SETTINGS", key)
        print(f"{key}:", value)
    except configparser.NoOptionError:
        print(f"No option '{key}' in section 'SETTINGS'")

El script de Python vuelve a leer el archivo INI para leer el contenido del archivo INI y, utilizando el método get(), recupera toda la información escrita. El método get() acepta dos parámetros: section y option.

Encontrará la option debajo de la section. El método get() arroja una excepción NoOptionError cuando no encuentra la opción especificada en la sección especificada.

Por lo tanto, para evitar cualquier excepción en tiempo de ejecución, la llamada al método get() y la instrucción print() se incluyen dentro del bloque try...except.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python File