【问题标题】:What's better, ConfigObj or ConfigParser?ConfigObj 或 ConfigParser 哪个更好?
【发布时间】:2010-08-06 00:48:32
【问题描述】:

为 Python 程序创建设置文件,内置模块 (ConfigParser) 或独立项目 (ConfigObj) 哪个更好?

【问题讨论】:

  • “更好”取决于上下文。简单,复杂?什么样的设置?
  • Apocryphon:我可以建议您将问题编辑为:“ConfigParser、ConfigObj、YAML 的优缺点是什么?”

标签: python configparser configobj


【解决方案1】:

我最近从 configparser 切换到 configobj,我很高兴这样做。

对我来说,最大的不同是 configobj 的 validator。它让我非常容易/简洁地(1)定义每个条目的类型和可接受的值,以及(2)设置默认值。

这两个功能为我节省了大量代码并防止了很多错误。另外,就我的代码的复杂性而言,使用 configobj 确实没有额外的开销,而且库非常小。

【讨论】:

  • 作为记录,我发现 configobj 的最佳介绍是 this tutorial - 它有点过时,但比文档更好地解释了基本操作和理念,恕我直言。
【解决方案2】:

根据您的 Python 版本,这是否能回答您的问题可能存在争议,但在简要了解 ConfigParser 和 ConfigObj 之后,我选择了 configparser,即 Python 3 版本的 ConfigParser。 There’s also a backported version on PyPI.

ConfigParser 对我来说似乎很麻烦,甚至可能——我敢这么说——unpythonic,并且在使用 ConfigObj 时,我遇到了一个与列表有关的深奥问题(我希望能够垂直对齐它们,因为我的列表真的很长),并且两年多前发布了最新版本并没有帮助。然而,configparser 的 API 看起来和 ConfigObj 的 API 一样漂亮(尽管功能并不丰富),当我们迁移到 Python 3 时,我可能可以轻松切换到内置版本。

顺便说一句,到目前为止效果很好。

【讨论】:

    【解决方案3】:

    到目前为止,我发现 ConfigParser 在我使用它的任何时候都足够了。另外,它是随附的电池,而不是第三方库。

    虽然我不得不承认,ConfigObj 文档中的代码示例让 ConfigParser 看起来真的很糟糕。对于大量操作 .ini 文件的脚本,我可能更喜欢它。

    【讨论】:

    • 我同意。我发现我在 ConfigParser 中缺少的功能在 ArgParse 中,它也是自 2.7 以来包含的电池。在我有可用的 python 2.7 的地方,我已经迁移到 ArgParse。
    猜你喜欢
    • 2011-03-27
    • 2013-03-16
    • 1970-01-01
    • 2011-02-22
    • 2013-06-06
    • 2013-11-02
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    相关资源
    最近更新 更多