2017-04-12 69 views
0

我在Python中使用ConfigObj從我的配置文件中讀取數據。我需要從配置文件中讀取一個列表。以下是我試過到目前爲止:如何在配置中創建列表列表,而在Python中使用ConfigObj?

  1. 節和小節 - 創建字典,沒有列出
  2. list_of_lists = (1, 2, (3, 4)) - ConfigObj對待一切爲字符串,併產生列表['(1', '2', '(3', '4))']

我想什麼有(在Python上下文)是這樣的: list_of_lists = [1, 2, [3, 4, ]]

有人可以請建議一種方法來做到這一點?我也接受替代方案。提前致謝。

+0

你能提供關鍵的一個例子,你想用和值會喜歡它有? –

+0

@ aquil.abdullah當然。我已將這個問題添加到 – th3an0maly

+1

這個問題上,我已經取消了我的回答,因爲它似乎沒有回答你的問題。我找到的是__Values總是字符串 - 如果你想要整數或其他任何東西,你可以自己做轉換。所以,你要反序列化任何不意味着是字符串的對象。 –

回答

0

試試這個,

# Read a config file 
from configobj import ConfigObj 
config = ConfigObj(filename) 

# Access members of your config file as a dictionary. Subsections will also be dictionaries. 

value1 = config['keyword1'] 
value2 = config['section1']['keyword3'] 

參考ConfigObj Documentation

+0

就像我在問題中指定的那樣,我需要一個列表列表,而不是字典 – th3an0maly

+0

@ th3an0maly,通過'lists = [[v,k]將dict轉換爲列表的列表,d.iteritems() ]'。對你起作用嗎? – SparkAndShine

+0

是的,沒有。是的,因爲它可以用作解決方法。沒有,因爲我正在尋找一個可以提供這種開箱即用的配置讀取器。謝謝。 – th3an0maly

1

下面是使用configparaser

# Contents of configfile 
[section1] 
foo=bar 
baz=oof 
list=[1,2,[3,4,]] 

代碼來獲取列表列表中的另一種方法:

import configparser 
import ast 
cfg = configparser.ConfigParser() 
cfg.read_file(open('configfile')) 
s1 = cfg['section1'] 
list_of_lists = ast.literal_eval(s1.get('list') 
print list_of_lists 

# output 
# [1, 2, [3, 4]]