2012-07-19 83 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將是一個逗號分隔的列表(在日誌記錄配置文件的情況下,每一個項目是指一個特定的節中的配置文件)