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
.