Python配置文件:有什么文件格式建议吗?INI格式仍然合适吗?看起来很老了

2024-04-29 16:48:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要为Python应用程序存储配置(键/值),我正在寻找将这些配置存储在文件中的最佳方法。

我遇到了Python的ConfigParser,我想知道现在的INI文件格式是否仍然合适?! 是否存在更新的格式,或者INI仍然是推荐的方法?(XML,JSON,…)

请分享你的意见/建议。。。


Tags: 文件方法json应用程序格式xmlini建议
3条回答

INI完全正常,正如其他人所说,配置文件的格式实际上取决于您将如何使用它。

就我个人而言,我是YAML的粉丝:简洁、易读、灵活。

谷歌似乎和我一样热情,因为他们也在谷歌应用引擎中使用它。python解析器是here

Dictionaries也很受欢迎。基本上是一个哈希表。

{"one": 1, "two": 2}就是一个例子,有点像json。

然后您可以像mydict["one"]那样调用它,它将返回1。

然后可以使用shelve将字典保存到文件中:

mydict = shelve.open(filename)
# then you can call it from there, like
mydict["one"]

所以,这比ini文件要简单一些。你可以像列表一样添加内容或者很容易地更改选项,然后一旦你关闭它,它就会把它写回来。

这里有一个简单的例子来说明我的意思:

import shelve

def main():
    mydict = shelve.open("testfile")
    mydict["newKey"] = value("some comment", 5)
    print(mydict["newKey"].value)
    print(mydict["newKey"].comment)
    mydict.close()


class value():
    def __init__(self, comment, value):
        self.comment = comment
        self.value = value



if __name__ == '__main__':
    main()

考虑使用普通的Python文件作为配置文件。

示例(example.conf):

# use normal python comments

value1 = 32
value2 = u"A unicode value"
value3 = "A plain string value"

value4 = ["lists", "are", "handy"]
value5 = {"and": "so", "are": "dictionaries"}

在程序中,使用execfile2.7 docs)加载配置文件:

if __name__ == "__main__":
    config = {}
    execfile("example.conf", config) 
    # python 3: exec(open("example.conf").read(), config)

    print config["value1"]
    print config["value5"]

我喜欢这种方法,原因如下:

  • 在简单的情况下,格式和INI样式的配置文件一样容易编写。它还与INI文件共享一个重要的特性:它非常适合版本控制(这对于XML和JSON来说不太正确)
  • 我喜欢在实际编程语言中使用配置文件所带来的灵活性。

这种方法被广泛使用,例如:

  • Django站点的设置位于settings.py中。Django不使用execfile,它使用import读取/执行settings.pyAFAIK,但最终结果是相同的:设置文件中的代码被执行。
  • bash shell在启动时读取并执行~/.bashrc
  • Python解释器在启动时导入(并执行)site.py

相关问题 更多 >