处理 Python 中的配置文件
Handle config files in Python
我正在与 Python 一起开发一个专注于文本处理的简单应用程序。为此,我需要用户添加一些信息并配置一些变量(如果需要)。所以我在考虑有一个配置文件。我已经阅读了很多相关内容(主要是 ini 文件和 configparser),但我有一些问题:
- 放置配置文件的最佳位置在哪里?为此使用 appdirs 是否正确?
- 因为我需要默认值,我该如何处理?我应该在第一次启动时生成它吗?有没有项目在做这个?我想看一看,没找到
Is it right to use appdirs for this?
如果您打算在不同的平台上安装该应用程序,在我看来使用 appdirs
是一个合适的选择。
As I need default values, how should I handle this?
默认配置,假设它不会根据安装、用户、平台等发生变化...将它放在应用程序目录中是有意义的。
否则,也使用 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'}}
我将我的配置文件放在应用程序中,这样更容易找到它们。
关于格式,有a nice wrietup about the various formats可以帮助您下定决心。我已经完整 JSON,有一个 _
评论条目,全部通过 json.load()
:
加载
[
{
"_": "the name of the game",
"name": "Cluedo"
},
{
"_": "number of players",
"number_of_players": 8
}
]
我正在与 Python 一起开发一个专注于文本处理的简单应用程序。为此,我需要用户添加一些信息并配置一些变量(如果需要)。所以我在考虑有一个配置文件。我已经阅读了很多相关内容(主要是 ini 文件和 configparser),但我有一些问题:
- 放置配置文件的最佳位置在哪里?为此使用 appdirs 是否正确?
- 因为我需要默认值,我该如何处理?我应该在第一次启动时生成它吗?有没有项目在做这个?我想看一看,没找到
Is it right to use appdirs for this?
如果您打算在不同的平台上安装该应用程序,在我看来使用 appdirs
是一个合适的选择。
As I need default values, how should I handle this?
默认配置,假设它不会根据安装、用户、平台等发生变化...将它放在应用程序目录中是有意义的。
否则,也使用 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'}}
我将我的配置文件放在应用程序中,这样更容易找到它们。
关于格式,有a nice wrietup about the various formats可以帮助您下定决心。我已经完整 JSON,有一个 _
评论条目,全部通过 json.load()
:
[
{
"_": "the name of the game",
"name": "Cluedo"
},
{
"_": "number of players",
"number_of_players": 8
}
]