我有一个Python记录器设置,使用Python的记录模块。我想使用ConfigParser模块将我正在使用的字符串与记录格式化对象一起存储在配置文件中。是否可以暂时禁用Python的字符串插值?
格式字符串存储在单独文件的设置字典中,该文件处理读取和写入配置文件。我遇到的问题是,python仍会尝试格式化文件,并在读取所有特定于日志记录模块的格式标志时将其覆盖。
{
"log_level":logging.debug,
"log_name":"C:\\Temp\\logfile.log",
"format_string":
"%(asctime)s %(levelname)s: %(module)s, line %(lineno)d - %(message)s"
}
我的问题很简单:我如何禁用格式化功能,同时将它保留在别处。我最初的反应是大量使用反斜杠来跳过各种百分比符号,但这当然会永久性地破坏格式,即使在我需要时也不会工作。
我还应该提一下,因为它在评论中被收购了,ConfigParser会做一些内部插值导致跳闸。这是我的回溯:
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
此外,良好的设置文件实践的一般指针会很好。这是我第一次使用ConfigParser(或记录此事)完成任何重要的事情。
由于提前, 多米尼克
插值?我认为正确的词将格式化 – 2010-03-29 12:55:55
@Edison:不,在Python中它也被称为插值。 http://docs.python.org/library/stdtypes.html#string-formatting-operations – 2010-03-29 12:58:12
我很困惑 - 格式化只发生在你明确要求它通过'%'[或'string.substitute( )']。 – 2010-03-29 13:00:26