擅长:python、mysql、java
<p>这取决于您想在配置文件中存储什么以及如何使用它们</p>
<ul>
<li><p>如果执行往返(yaml→code→yaml)并希望保留注释,则不能使用<code>PyYAML</code>或<code>ConfigParser</code>。</p></li>
<li><p>如果您想保持密钥的顺序(例如,当您签入配置文件时),<code>PyYAML</code>不会这样做,除非您指定<code>!!omap</code>(这使得更新比普通映射更不容易)</p></li>
<li><p>如果您希望拥有包含映射/字典的未命名元素列表的复杂结构,那么<code>ConfigParser</code>和<code>ConfigObj</code>将不会有帮助,因为INI文件的键值对必须进入节,并且列表只能是值。</p></li>
</ul>
<p>YAML读取器的<a href="https://pypi.python.org/pypi/ruamel.yaml" rel="noreferrer">^{<cd7>}</a>实现支持上述所有情况。我使用fuzzyman的优秀ConfigObj进行了很长一段时间的往返评论保存,同时使用PyYAML进行更复杂的结构,这将两者结合得最好。<code>ruamel.yaml</code>包括可以将<code>yaml</code>INI文件转换为YAML的<code>ConfigObj</code>实用程序</p>
<hr/>
<p>1<sub>ruamel.yaml是一个支持yaml 1.2的yaml库(我建议使用这个库,但我是这个包的作者)。PyYAML仅支持(大多数)YAML 1.1。</sub></p>