2012-07-19 49 views
4

我继承了从default.conf文件,我相信这是一个机器配置文件中提取一些变量的Python脚本数组或列表。如何创建一个default.conf文件

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

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

所以在上面的例子中,配置关键是syndication,我尝试添加多种选择的变量是category

谢谢!

+0

你能告诉是的代码是导致问题的片段?这将(希望)帮助我们弄清楚应该在conf文件中。 – mgilson 2012-07-19 21:38:51

+0

如果需要使用ConfigParser读它,分析列出了未建。我最喜欢的清单是这样的:http://stackoverflow.com/a/9735884/1301710。也许你可以切换到另一个配置解析器或JSON来存储和解析你的配置文件http://wiki.python.org/moin/ConfigParserShootout – bmu 2012-07-28 06:51:09

回答

0

我不认为你在配置文件列表类型。但是你可以做一些像逗号分隔值:

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

然后在你的代码被拆分值,

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

你如何阅读.conf文件你没有提到,所以我假设你正在使用ConfigParser

我尝试将categories设置为一个元组,并使用ConfigParser.write,并以结果文件中元组的字符串表示形式结束。这对我意味着ConfigParser不支持多个选项。

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

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

如果有适合一行的数值太少,我会选择其他的同伴例证他们用逗号分隔,否则每RFC822标准您可以通过行拆分值开始通过标签:

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 

注:您可以:=,但之后被放值在第一线值的列表,我想从第二行开始,当你需要手动编辑文件时,它更“可读”。

0

这也许是工作方式与Python的logging configuration file format一样吗?在这种情况下categories将是一个逗号分隔的列表(在日志记录配置文件的情况下,每一个项目是指一个特定的节中的配置文件)