我继承了一个python脚本,它从default.conf文件中提取一些变量,我认为这是一个机器配置文件。
该脚本的一个部分是从.conf文件中提取配置密钥,并期望有一个可能的选项列表,但是现在只有一个选项,我不知道如何使它成为那里是多种选择。
[syndication]
name = Test Name
title = Test Title
categories = Category 1
因此,在上面的示例中,配置密钥为syndication
,我尝试添加多个选项的变量为category
。
谢谢!
答案 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
将是一个以逗号分隔的列表(如果记录配置文件,则每个项目都指的是配置文件中的特定部分)