我正在用Python编写一个守护程序脚本,并且希望能够在程序期望读取的文件中指定设置(如.conf文件)。标准库有configparser和xdrlib文件格式,但似乎都不是pythonic;前者是Microsoft标准,后者是Sun Microsystems标准。
我可以写自己的,但我宁愿坚持一个众所周知的文件标准,而不是重新发明轮子。
答案 0 :(得分:5)
除非您有任何特别复杂的需求,否则使用configparser并没有错。它是一种简单,扁平的文件格式,很容易被许多人理解和熟悉。如果这真的让你错误的方式,总是可以选择使用JSON或YAML配置,但那些是更重量级的格式。
第三个流行的选择是只使用Python作为配置文件。这为您提供了更大的灵活性,但也通过“仅”修改配置文件来增加引入奇怪错误的几率。
答案 1 :(得分:2)
恕我直言:永远不要触摸ConfigParser模块,它已经过时了(读起来:显然没有更新)并且有很多怪癖。用于评论的API?算了吧!访问DEFAULT-Section?大声笑!想知道没有解析Config-Fields?好吧,猜测:ConfigParser遍历所有配置文件并无声地失败(掩盖)可能偶尔会对所有错误执行精简异常跟踪。找出哪个错误属于哪个文件并不容易。没有嵌套的配置节......
而不是CSV然后是ConfigParser!
IMO:使用Json作为配置文件。 python-data结构和Json-String表示之间非常灵活,直接的映射是可能的,并且仍然是人类可读的。顺便说一句。不同语言之间的交换非常容易。
文件中的Curly-Braces不是那么漂亮,但你不能拥有它! ; - )
答案 2 :(得分:1)
我也开始使用configparser和optionsparser,但对我来说,最流畅的方法是在.py文件中定义字典并将其作为模块导入。然后,您可以直接访问配置,而无需进行任何进一步处理。
#
# example.py
#
config = {
"dialect" : "sqlite",
"driver" : "",
"database" : "testdb",
"host" : "localhost",
"port" : "0"
}
只要你需要访问,只需执行:
from example import config
print config["database"]