具有重复节/对象的Python配置文件

时间:2013-09-27 00:58:08

标签: python config config-files

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

[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文件绝不浪费时间。

1 个答案:

答案 0 :(得分:1)

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

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

有时问题的域会影响要使用的文件类型。如果您正在创建一个Web服务器,那么您可能希望使用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)