我正在从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']
我该怎么做?
答案 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']