ConfigObj/ConfigParser 与使用 YAML 作为 Python 设置文件

2023-12-24

对于为Python程序创建设置文件,内置模块(ConfigParser)或独立项目(ConfigObj),还是使用YAML数据序列化格式,哪个更好?我听说 ConfigObj 比 ConfigParser 更容易使用,尽管它不是内置库。我还了解到 PyYAML 很容易使用,尽管 YAML 需要一些时间来使用。除了易于实施之外,哪个是创建设置/配置文件的最佳选择?


这取决于您想要在配置文件中存储的内容以及如何使用它们

  • 如果您进行往返(yaml→code→yaml)并希望保留注释,则不能使用PyYAML or ConfigParser.

  • 如果您想保留密钥的顺序(例如,当您签入配置文件时),PyYAML除非您指定,否则不会这样做!!omap(这使得它比普通映射更不容易更新)

  • 如果您想要具有包含映射/字典的未命名元素列表的复杂结构,那么ConfigParser and ConfigObj不会帮助您,因为 INI 文件键值对必须进入部分,并且列表只能是值。

The ruamel.yaml https://pypi.python.org/pypi/ruamel.yamlYAML 阅读器的实现支持所有上述 1。我长期以来一直使用 fuzzyman 出色的 ConfigObj 来保存往返注释,并使用 PyYAML 来保存更复杂的结构,这结合了两全其美。ruamel.yaml包括yaml可以转换的实用程序ConfigObjINI 文件到 YAML


¹ ruamel.yaml is a YAML library that supports YAML 1.2 (I recommend using that, but then I am the author of the package). PyYAML only supports (most of) YAML 1.1.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ConfigObj/ConfigParser 与使用 YAML 作为 Python 设置文件 的相关文章

随机推荐

  • 为什么我收到此错误警告:空感知操作的操作数“??”具有排除 null 的“Color”类型

    我正在使用这个包 flutter datetime picker 1 5 1 这是我的代码 String date Please pick Age Widget buildage return Column crossAxisAlignme
  • 根据另一个单元格的数值更改 x 个单元格的颜色

    I have range and i want to highlight my range of cells based value i enter in cell Range C5 If i enter 5 in cell C5 then
  • RPScreenRecorder stopRecording 块没有被调用

    我已经进行了足够的搜索 但未能找到解决方案 我正在使用 ReplayKit 来录制我的应用程序的屏幕 我已开始通过调用录制屏幕 let sharedRecorder RPScreenRecorder shared sharedRecorde
  • 通过多索引选择

    我有两个数据框 df a pd DataFrame data A B C A1 B1 C1 columns first secound third df a set index first secound inplace True df b
  • Java语言检测

    实际上 我正在使用 java 语言检测来检测文本语言 但出现以下错误 Exception in thread main java lang IllegalAccessError tried to access field com cyboz
  • 如何在 QML 上使用 JavaScript 库

    我在 5 12 2 上使用一些带有 QML 的 javascript 库 其中一些像 Proj4JS 一样工作 但我在使用时遇到错误地理库 js https geographiclib sourceforge io scripts geog
  • 如何在不同区域设置中对日期对象进行 strftime? [复制]

    这个问题在这里已经有答案了 我在 python 中有一个日期对象 我需要使用 a 工作日 和 b 月份 代码在旧系统的 C 语言环境中生成时间戳 但是 我不想更改应用程序的区域设置 因为其他部分需要尊重用户当前的区域设置 有没有办法在特定区
  • jQuery 可排序项目高度

    我有一个基于列表的简单 jQuery 可排序 如下所示 ul li Item 1 li li Item 2 li li Item 3 li li Item 4 li ul 我创建了一个辅助函数 以便无论项目的内容是什么 辅助函数始终具有相同
  • GitLab CI 缓存密钥

    假设我有以下步骤 gitlab ci yml file setup vue image stage setup script cd vue npm install no audit cache key node cache paths vu
  • python 3 中缺少 argparse

    有人知道为什么 argparse 模块没有在 python 3 中出现吗 它是 python 2 7 中的新功能 但 2 x 分支在 2 7 中已经耗尽 对我来说 不在实际的 python 3 分支中支持它是没有意义的 它将出现在 Pyth
  • 知道何时在序言中使用剪切

    我参加了一门课程 在其中学习了一些序言 我不知道如何 何时使用剪切 尽管我了解了剪切的一般概念 但我似乎无法正确使用它们 任何人都可以简要解释一下或提供一个关于他们可以推荐的 剪辑 的好教程 不是 learnprolognow org 吗
  • 使用 php mysqli 检查电子邮件是否存在[重复]

    这个问题在这里已经有答案了 我是 mysqli 的新手 我想用 php 和 mysqli 检查数据库中是否已存在电子邮件 这是我到目前为止所做的 ini php 连接 php 注册 php
  • 如何在 C# 中播放提取的波形文件字节数组?

    目前 我已成功分离 WAVE 文件的左声道和右声道 并将标题包含在 byte 数组中 我的下一步是要播放两个频道 如何才能做到这一点 这是一个代码片段 byte song left new byte fa Length byte song
  • QuickType 预测会考虑应该被我的 UITextFieldDelegate 阻止的击键

    我有一个文本字段 我不想在其中允许前导空格 所以我实施了textField textField shouldChangeCharactersInRange replacementString 并阻止将文本更改为以空格开头的内容的尝试 这按预
  • CodeIgniter 2 不允许控制器存在多级子文件夹

    当我读到doc http ellislab com codeigniter user guide general controllers html CodeIgniter 中的控制器应该支持多级子文件夹 但据我测试 在第一个一级文件夹之后是
  • 为什么 -0.0 与 0.0 不同?

    I could be missing something fundamental but consider this interpreter session1 gt gt gt 0 0 is 0 0 False gt gt gt 0 0 i
  • 让 python 程序等待 Twisted deferred 返回值

    我有一个程序可以从其他页面获取信息并使用 BeautifulSoup 和 Twisted 的 getPage 来解析它们 稍后在程序中我打印延迟进程创建的信息 目前 我的程序尝试在不同的返回信息之前打印它 我怎样才能让它等待 def twi
  • 有人在 Matplotlib 中制作了 Parula 颜色图吗?

    我知道有一些关于 Matlab 对其新的默认颜色图进行版权保护的讨论 http sourceforge net p matplotlib mailman message 32953371 但我想知道是否有勇敢的用户在 Matplotlib
  • 如何根据对应的值过滤字典键

    I have dictionary foo 12 bar 2 jim 4 bob 17 我想迭代这个字典 但迭代的是值而不是键 这样我就可以在另一个函数中使用这些值 例如 我想测试哪些字典值大于6 然后将它们的密钥存储在列表中 我的代码如下
  • ConfigObj/ConfigParser 与使用 YAML 作为 Python 设置文件

    对于为Python程序创建设置文件 内置模块 ConfigParser 或独立项目 ConfigObj 还是使用YAML数据序列化格式 哪个更好 我听说 ConfigObj 比 ConfigParser 更容易使用 尽管它不是内置库 我还了