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