Python配置文件:推荐什么文件格式?INI格式还合适吗?感觉有点老派
我需要为一个Python应用程序存储一些配置(键/值),现在我在寻找最好的方法把这些配置存储在一个文件里。
我发现了Python的ConfigParser,我在想现在使用INI文件格式还合适吗?现在有没有更现代的格式,还是说INI格式依然是推荐的选择?(比如XML、JSON等等)
请分享你们的看法和建议...
8 个回答
9
字典在编程中也非常受欢迎。简单来说,它就是一种哈希表。
{"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()
67
可以考虑使用普通的Python文件作为配置文件。
举个例子(config.py
):
# use normal python comments
value1 = 32
value2 = "A string value"
value3 = ["lists", "are", "handy"]
value4 = {"and": "so", "are": "dictionaries"}
在你的程序中,可以用 exec
来加载这个配置文件(文档):
from pathlib import Path
if __name__ == "__main__":
config = {}
exec(Path("config.py").read_text(encoding="utf8"), {}, config)
print(config["value1"])
print(config["value4"])
我喜欢这种方法,原因有以下几点:
- 在简单的情况下,这种格式和INI格式的配置文件一样容易编写。它还有一个重要的特点和INI文件相似:非常适合版本控制(对于XML和JSON来说,这一点就没那么明显了)。
- 我喜欢将配置文件放在实际的编程语言中带来的灵活性。
这种方法被广泛使用,以下是一些例子:
- 一个Django网站的设置文件放在 settings.py 中。Django并不使用
execfile
,而是用import
来读取/执行settings.py
,但最终效果是一样的:设置文件中的代码会被执行。 - bash shell在启动时会读取并执行
~/.bashrc
。 - Python解释器在启动时会导入
site.py
。