Tengo un registrador de Python configurado, usando el módulo de registro de python. Quiero almacenar la cadena que estoy utilizando con el objeto de registro de formateador en un archivo de configuración utilizando el módulo ConfigParser.¿Es posible desactivar temporalmente la interpolación de cadenas de Python?
La cadena de formato se almacena en un diccionario de configuraciones en un archivo separado que maneja la lectura y escritura del archivo de configuración. El problema que tengo es que Python todavía intenta formatear el archivo y se cae cuando lee todos los indicadores de formato específicos del módulo de registro.
{
"log_level":logging.debug,
"log_name":"C:\\Temp\\logfile.log",
"format_string":
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
}
Mi pregunta es simple: cómo puedo desactivar la funcionalidad de formateo aquí mientras la guardo en otro lugar. Mi reacción inicial fue el uso abundante de la barra diagonal inversa para escapar de los diversos símbolos de porcentaje, pero eso por supuesto rompe el formateo de forma permanente, de modo que no funcionará incluso cuando lo necesite.
Debo mencionar también, ya que se compró en los comentarios, que ConfigParser hace alguna interpolación interna que causa el tropiezo. Aquí está mi traceback:
Traceback (most recent call last):
File "initialconfig.py", line 52, in <module>
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
File "initialconfig.py", line 31, in add_settings
self.set(section_name, setting_name, default_value)
File "C:\Python26\lib\ConfigParser.py", line 668, in set
"position %d" % (value, m.start()))
ValueError: invalid interpolation syntax in '%(asctime)s %(levelname)s: %(module
)s, line %(lineno)d - %(message)s' at position 10
Además, los consejos generales sobre buenas prácticas de archivos de configuración serían agradables. Esta es la primera vez que hago algo significativo con ConfigParser (o registro para ese asunto).
Gracias de antemano, Dominic
interpolación? Creo que la palabra correcta sería formatear –
@ Edison: No, en Python también se llama interpolación. http://docs.python.org/library/stdtypes.html#string-formatting-operations –
Estoy confundido: el formateo solo ocurre cuando explícitamente le pides que lo haga a través de '%' [o 'string.substitute () ']. –