我有一個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