什么是指定配置文件的最pythonic方法?

时间:2013-03-18 20:13:02

标签: python

我正在用Python编写一个守护程序脚本,并且希望能够在程序期望读取的文件中指定设置(如.conf文件)。标准库有configparser和xdrlib文件格式,但似乎都不是pythonic;前者是Microsoft标准,后者是Sun Microsystems标准。

我可以写自己的,但我宁愿坚持一个众所周知的文件标准,而不是重新发明轮子。

3 个答案:

答案 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"]