Python配置解析器数组根据文件内容顺序排序

时间:2014-12-15 11:33:02

标签: python arrays readfile

我正在从python中读取配置文件。

要读取的文件内容:

[environment]
env = openstack

[nodes]
appserver-mgr2
appserver-wkr2

我正在阅读节点部分如下。

def load_server_config():
        config = ConfigParser.RawConfigParser(allow_no_value=True)
        serverList = []
        config.read('deployment.cfg')
        dic = dict(config.items('nodes'))
        for node, ip in dic.iteritems():
                serverList.append(node)
        print serverList
        return serverList

当我打印serverList数组时,它不符合我放入文件的顺序。 它印刷如下。

['appserver-wkr2', 'appserver-mgr2']

我必须按升序手动对数组进行排序。

serverList.sort()
print serverList

然后输出变为。

['appserver-mgr2', 'appserver-wkr2']

但是我想将节点部分提取到一个数组中,其顺序与我在我要放入的文件中的顺序相同。

举个例子,我的文件内容如下。

[nodes]
appserver-p
appserver-q
appserver-a
appserver-b

我想按如下方式构建数组内容。

['appserver-p', 'appserver-q', 'appserver-a', 'appserver-b']

我该怎么做?

1 个答案:

答案 0 :(得分:0)

根据@fredtantini我使用orderedDict如下。

import collections
def load_server_config():
        serverList = []
        config.read('deployment.cfg')
        orderedDic = collections.OrderedDict(config.items('nodes'))
        for node, ip in orderedDic.iteritems():
                serverList.append(node)
        print serverList
        return serverList

文件内容。

[nodes]
appserver-mgr2
appserver-wkr2
appserver-wkr3
appserver-wkr4

我得到了我需要的结果。

['appserver-mgr2', 'appserver-wkr2', 'appserver-wkr3', 'appserver-wkr4']