我正在玩Python来开发一个专注于文本处理的简单应用程序。为此,我需要用户添加一些信息并配置一些变量(如果需要)。所以我在考虑配置文件。我一直在阅读很多关于它的内容(主要是ini文件和配置文件),但我有一些问题:
答案 0 :(得分:3)
为此使用appdirs是对的吗?
如果您打算在不同平台上安装该应用,使用appdirs
似乎是一个合适的选择。
由于我需要默认值,我该如何处理?
默认配置,假设它不会因安装,用户,平台等而改变......将它放在app目录中是有意义的。
否则,也请使用appdirs
。
对于格式,如果配置文件仅由应用程序更改(而不是由用户直接更改,例如在文本编辑器中),那么只需使用您感觉更舒服的格式。在机器的眼中,它们之间通常没有太大的区别。虽然某些解决方案可能比其他解决方案更优化,但您会发现自己相当快。任何事都足够好,无论是.ini
,.json
,.yml
等......
现在,如果您打算让用户手动更改配置,那么最好采用足够简单的格式,这样可以减少混乱的可能性。在这种情况下,我通常会使用yaml
并使用非常简单的结构。它被解析为python dict
,并且通常会正确推断出类型。
示例强>
# user_config.yml
# Some example configuration
paulo:
age: 25
city: Berlin
david:
age: 29
city: Oviedo
# app.py
# loading the configuration
import yaml
user_config = yaml.load(open('user_config.yml', 'r'))
user_config
{'david': {'age': 29, 'city': 'Oviedo'},
'paulo': {'age': 25, 'city': 'Berlin'}}
答案 1 :(得分:0)
我将配置文件与应用程序放在一起,更容易找到它们。
至于格式,有a nice wrietup about the various formats可帮助您下定决心。我已经转到完整的JSON,其中包含_
条评论,所有条目都通过json.load()
加载:
[
{
"_": "the name of the game",
"name": "Cluedo"
},
{
"_": "number of players",
"number_of_players": 8
}
]