python - 在 Python 中处理配置文件

标签 python configuration-files

我正在使用 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'}}

关于python - 在 Python 中处理配置文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913979/

相关文章:

python - BeautifulSoup 如何在 <br> 标签后提取文本

python - Pandas 连接/连接操作合一以连接数据帧

node.js - NodeJS Async/Await - 使用 API 调用构建配置文件

visual-studio-2010 - msbuild 多次转换一个配置

python - 我应该如何解决这个 DeprecationWarning?

php - 将 JSON 数据从 PHP 传递到 Python 脚本

javascript - 如何更改 config.js 中的数据库架构

php - 我可以在 Zend 中更改 application.ini 的位置吗?

grails - 如何更新外部配置文件而不在 Grails 中重建 war 文件

python - 跟踪文件夹更改/Dropbox 更改