Ficheros *.ini para configurar en Python
Desde hace un tiempo que vengo desarrollando sistemas en python y wxpython y siempre tengo que guardar archivos de configuración, habitualmente lo hago en la misma base de datos donde esta el
sistema pero a veces eso termina siendo mas un problema que una solución.
Así que un día, me puse las pilas y me puse a desarrollar una rutina que básicamente leía un archivo de texto plano, tomaba los datos y las convertía en variables, es así que mi rutina fue creciendo en complejidad hasta que… un día me pregunte…, python, no lo
tendrá ya hecho?
La respuesta se llama ConfigParser , después de maldecir un rato por el tiempo perdido haciendo cosas a mano agarre y me puse a ver un poco como funciona esta rutina.
![]()
Sorprende lo fácil que es leer un archivo de texto con configuración y como tratarlo, pero vamos por partes, para empezar hay que crear el archivo de texto con nuestra configuración, la llamaremos pepe.ini y dentro ponemos:
[TERMINAL]
;Datos de la terminal a trabajar
TERNro=30
TERNom=Nombre de la terminal
[PANTALLA]
;Datos de la pantalla
PANAlto=800
PANAncho=600
El formato del archivo es claro, los ; son comentarios y cada
sección esta encabezada entre corchetes, las cadenas de la
izquierda del = son las opciones y lo que esta después del =
o sea a la derecha son los valores, algo bastante parecido a lo que
usan archivos de otros sistemas operativos.
Para leerlo vamos a usar dos caminos, uno para los apurados y
otro mas refinado
, empezamos para los apurados:
import ConfigParser
config =
ConfigParser.ConfigParser()
config.read(['pepe.ini'])
for
opt,value in config.items(’PANTALLA’):
print
opt,value
Por ejemplo al ejecutar esto nos devuelve el print:
panancho 600
panalto 800
opt tiene el nombre de la variable y value el valor del
mismo.
Esta rutina funciona bien, pero.. si por alguna razón
no encuentra el archivo ini el programa directamente se corta y
salta por error así que se lo puede “refinar” un
poco…
import ConfigParser,sys
config = ConfigParser.ConfigParser()
#
Controlamos cualquier error con un
try.
try:
config.read(['pepe.ini'])
# o también se
puede usar
# config.readfp(file(’pepe.ini’))
# yo
no encontré diferencias.
except Exception, e:
print
“Error, couldn’t read config “,
e.strerror
sys.exit()
for opt,value in config.items(’PANTALLA’):
print
opt,value
later = config.get (’TERMINAL’,
‘ternom’.lower())
print “Nombre de la Terminal
: “, later
Como vemos seguimos manteniendo la opción que imprima una
“sección” completa o bien pedimos en la linea de
leter una variable en especial de una sección en especial,
así podemos recuperar secciones completas o bien variables
especificas para luego procesarlas como queremos en nuestro sistema.
Un detalle a tener en cuenta, si la variable a “buscar”
es un dato numérico, podemos hacer un control de que sea
correcto mediante try, se puede hacer algo así…
try:
anpan = int(config.get (’TERMINAL’,
‘ternro’.lower()))
except:
print “El Numero
de terminal a buscar es incorrecto, por favor verifique.”
print
“Le asignamos el valor 0 como valor de default”
anpan
= 0
return
Simple, limpio y sencillo, como python ya nos tiene
acostumbrados.


Ultimos Comentarios