gpt4 book ai didi

python - 配置文件格式、复杂数据结构(列表、字典)、注释、可编辑

转载 作者:太空宇宙 更新时间:2023-11-03 15:09:04 24 4
gpt4 key购买 nike

我长期以来一直使用普通的 python 文件进行配置。我可以添加注释(如果变量名不够用,提醒我条目的含义)并支持列表和字典。

现在我需要为客户导入一些东西,这似乎有点危险,因为如果他们手动编辑错误,它可能会破坏系统。

将来我希望能够从程序中更新文件,并且还能够使用普通编辑器对其进行编辑(并且更喜欢不必匹配 <>() :

  • XML 不合适,因为它是伪装成 ascii 的二进制
  • .ini 文件必须有小层次结构
  • JSON 无法处理评论。

我现在正在考虑向 JSON 添加注释,但这基本上需要重写解析器以保留注释。而且 JSON 的可读性不是很好。

.ini 有一个 ConfigObj 库保留注释的文件,但 .ini是为了满足我的需要(包含值的字典列表是字典列表)。

我应该使用其他一些配置文件格式吗?或者我应该看看解析我的 .py在导入文件之前以安全的方式保存文件(这也允许再次写出它们)?

最佳答案

正如 Chazeon 和 jme 所指出的,您应该看看 YAML。它支持嵌套数据结构(列表(YAML 中的序列)、字典(映射)和各种基元(整数、 float 、字符串、日期)。

YAML 还支持行尾注释(使用 # 引入),但“标准”PyYAML Chazeon 提到的解析器在读取数据时会丢弃这些(并且不能写入这些)。

包裹ruamel.yaml (我是其中的作者)派生自 PyYAML,在进行往返(YAML 文件到 python 数据结构到 YAML 文件)时保留注释。它还保留了大部分 YAML 格式(列表和字典的 block 与单行)。

然而,缩进是“标准化的”,因此所有 block 映射和序列在第一次往返后看起来都一样。两者的缩进默认为 2 个空格,但可以单独设置,也可以使用例如将破折号“插入”序列元素之前的空格内。 yaml.indent(mapping=3, sequence=5, offset=2)

关于python - 配置文件格式、复杂数据结构(列表、字典)、注释、可编辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29415326/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com