【问题标题】:Config file for Python with repeated sections/objects [duplicate]具有重复部分/对象的 Python 配置文件 [重复]
【发布时间】:2023-04-10 06:59:01
【问题描述】:

我想存储这种配置,重复部分和每个部分中的键:

[item]
name = 'name1'
url = 'address1'
whatever_var = 'foo1'

[item]
name = 'name2'
url = 'address2'
whatever_var = 'foo2'

...

什么配置文件格式适合这种结构?:ConfigParser、ConfigObj、JSON、YAML、...? 我从未使用过任何一个(Python 新手),想知道哪个最适合。

注意:到目前为止,我使用的是 Python 2.7。

[编辑]:嗯,我相信这不仅仅是一个重复的问题,因为我不仅需要重复的键,而且: - 重复的部分(内部有其唯一键,不能与其他部分的其他键组合)

另外,我不问如何在 ConfigParser 中执行此操作,但哪种文件类型更适合这种情况(XML、JSON、自定义文件……)。 事实上,我认为我想要的东西无法通过 ConfigParser 或 ConfigObj 获得,我可能会尝试使用 XML,即使它的可读性差一些。而且,嘿,学习处理 XML 文件绝不是浪费时间。

【问题讨论】:

  • 如果我没记错的话,ConfigParser 是基于 dict 的,所以我认为需要一些工作才能让它使用这种格式。
  • 这不是一个重复的问题;引用的问题是询问重复值。这个问题是关于重复键的问题。
  • 即使是重复的问题,“原始”问题也没有真正好的解决方案,也没有公认的答案。

标签: python config configuration-files


【解决方案1】:

看起来您要将数据存储在文件中,而您却忽略了使用数据库和其他类型的与远程服务器交互来保存这些东西的想法。很高兴你把它理顺了。

如果数据很小,许多文件类型将支持这种类型的数据。 (如果它适合您的机器)。如果由于数十亿条记录而导致数据变得太大或访问时间过长,那么您就会遇到不同的问题。

有时问题的领域会影响要使用的文件类型。如果您正在制作网络服务器,那么您可能希望使用 JSON 或 XML 进行传输。

如果您想使用您在帖子中说明的格式,这里是如何读取文件。

import configparser

conf = configparser.ConfigParser()

conf.read('FILE.INI')

-这是从您读取的文件中读取值的方法(假设您的 [item] 将具有像 [Person1] 这样的唯一标题)

conf['Person1']['name']

-然后写文件就很正常了

with open('FILE.INI', 'w') as inifile:

    conf.write(inifile)

【讨论】:

  • 这是一个供本地使用的配置文件,它将存储一些信息以进行自动安装和一些我需要自动化的其他任务。将有大约 50 个“项目”(几乎所有项目都具有相同的变量,但值不同)。由于其中一些可能会不时消失或更改,我不想手动添加数字(即 item1、item2、...)。而且我需要每个项目都有自己的变量,从不与其他项目混合。我不知道 JSON,所以我想我会通过 lxml 尝试使用 XML。
猜你喜欢
  • 2012-10-12
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2012-09-05
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
  • 2014-05-12
相关资源
最近更新 更多