为 Python 程序创 build 置文件,内置模块(ConfigParser)或独立项目(ConfigObj),或使用 YAML 数据序列化格式,哪个更好?我听说 ConfigObj 比 ConfigParser 更容易使用,尽管它不是内置库。我还读到 PyYAML 很容易使用,尽管 YAML 需要一些时间来使用。除了易于实现之外,哪个是创 build 置/配置文件的最佳选择?
最佳答案
这取决于您想在配置文件中存储什么以及如何使用它们
如果您进行往返 (yaml→code→yaml) 并希望保留注释,则不能使用
PyYAML
或ConfigParser
。如果您想保留 key 的顺序(例如,当您 checkin 配置文件时),
PyYAML
不会这样做,除非您指定!!omap
(这使得更新比普通映射更容易)如果您想要具有包含映射/字典的未命名元素列表的复杂结构,那么
ConfigParser
和ConfigObj
将无法帮助您作为 INI 文件键值对必须进入部分,列表只能是值。
ruamel.yaml
YAML 阅读器的实现支持上述所有 ¹。很长一段时间以来,我一直使用fuzzyman 出色的ConfigObj 来保存往返评论,以及使用PyYAML 来处理更复杂的结构,这结合了两全其美。 ruamel.yaml
包含 yaml
实用程序,可以将 ConfigObj
INI 文件转换为 YAML
¹ ruamel.yaml 是一个支持 YAML 1.2 的 YAML 库(我建议使用它,但我是该包的作者)。 PyYAML 仅支持(大部分)YAML 1.1。
关于python - ConfigObj/ConfigParser 与为 Python 设置文件使用 YAML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3444436/