ConfigParser y secciones en mayuscula/minuscula

Oswaldo Hernández listas en soft-com.es
Vie Jul 10 14:43:43 CEST 2009


Arnau Sanchez escribió:
> Oswaldo Hernández wrote:
> 
>> El problema con el que me encuentro es que si intento leer una sección 
>> llamada '[general]' y el usuario la ha escrito como '[GENERAL]' ó 
>> '[General]' el modulo ConfigParser no la encuentra.
> 
> En general, quien toca un fichero de configuración debería saber lo que 
> está haciendo. Pero en fin, supongo que es un caso especial de usuario 
> no técnico.
> 
>> Veo que una vez que el objeto ConfigParser ha leido el archivo, tiene 
>> la propiedad '_sections' que es un diccionario con todo el contenido 
>> del archivo ini. La unica solución que se me ocurre hacer una copia de 
>> este diccionario convirtiendo los nombres de seccion y clave a 
>> minúsculas.
> 
> Se me ocurre otra forma, mira:
> 
> http://docs.python.org/library/configparser.html#ConfigParser.ConfigParser
> 
> El segundo parámetro de ConfigParser() es el tipo de diccionario que 
> usará internamente. Si le pasas una clase que implemente un diccionario 
> con claves case-insensitive, como por ejemplo ésta de aquí:
> 
> http://code.activestate.com/recipes/283455/
> 
> Podrás hacer algo así:
> 
> parser = ConfigParser(dict_type=caselessDict)
> parser.read("file.conf")
> parse.get("MySECtiON", "var1")
> 

Desconocia que se le podia indicar el tipo de diccionario a utilizar, en la documentacion no lo 
dice, o no lo he sabido encontrar.

De todas formas durante este rato he hecho la modificacion del diccionario _sections derivando la 
clase ConfigParser y sobreescribiendo el metodo 'read' de forma que despues de hacer la lectura, 
crea un nuevo diccionario con las secciones y clave en minúsculas y lo reasigna a _sections.
Estoy haciendo pruebas y en principio parece que funciona bien.


>> NOTA: Sorry si este mensaje llega dos veces, lo envie anteriormente 
>> con el from erroneo.
> 
> Tranquilo, llegó sólo una; si lo mandas desde una cuenta no registrada 
> el mensaje queda en espera de aprobación, a mi me ha pasado varias veces 
> (lo que no sé es si los administradores se miran esos mensajes o no).
> 
Se quedarán en el limbo de los mensajes :)


Gracias.

-- 
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
PD:
Antes de imprimir este mensaje, asegúrese de que es necesario.
El medio ambiente está en nuestra mano.
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





Más información sobre la lista de distribución Python-es