如何在default.conf文件中创建数组或列表

时间:2012-07-19 21:18:30

标签: python linux configuration webserver

我继承了一个python脚本,它从default.conf文件中提取一些变量,我认为这是一个机器配置文件。

该脚本的一个部分是从.conf文件中提取配置密钥,并期望有一个可能的选项列表,但是现在只有一个选项,我不知道如何使它成为那里是多种选择。

[syndication]
name = Test Name
title = Test Title
categories = Category 1

因此,在上面的示例中,配置密钥为syndication,我尝试添加多个选项的变量为category

谢谢!

4 个答案:

答案 0 :(得分:6)

如果某一行的值太少,我会选择用逗号分隔它们,例如其他伙伴,否则按RFC822标准,您可以按标签开始的行拆分值:< / p>

settings.conf:

[syndication]
name = Test Name
title = Test Title
categories =
    Category 1
    Category 2
    Category 3

settings.py

#!/usr/bin/python
import ConfigParser

config = ConfigParser.ConfigParser()

# Reading
config.readfp(open('settings.conf'))
categories = config.get('syndication', 'categories').strip().split('\n')

# Appending
categories.append('Category 4')

# Changing
config.set('syndication', 'categories', '\n' + '\n'.join(categories))

# Storing
config.write(open('settings.conf', 'w'))

您的新 settings.conf

[syndication]
name = Test Name
title = Test Title
categories = 
    Category 1
    Category 2
    Category 3
    Category 4

注意:您可以在:=之后的第一行添加一个值,但作为值列表,我认为从第二行开始是当您手动编辑文件时,更“可读”。

答案 1 :(得分:0)

我认为您在配置文件中没有列表类型。但是,您可以执行逗号分隔值:

[syndication]
name = Test Name
title = Test Title
categories = Category 1, Category 2

然后在您的代码中将值拆分为

values = [value.strip() for value in cfg.get('syndication', 'categories').split(',')]

答案 2 :(得分:0)

您尚未提及如何阅读.conf文件,因此我假设您正在使用ConfigParser

我尝试将categories设置为元组并使用ConfigParser.write,最后在结果文件中使用元组的字符串表示形式。这对我来说意味着ConfigParser不支持多种选择。

您可以随时手动分解选项:

categories = [option.strip() for option in config.get('syndication', 'categories').split(',')]

答案 3 :(得分:0)

它的工作方式可能和python的logging configuration file format一样吗?在这种情况下,categories将是一个以逗号分隔的列表(如果记录配置文件,则每个项目都指的是配置文件中的特定部分)