可以python读取.ini文件,如php Yaconf

时间:2017-04-14 14:17:26

标签: php python ini

php Yaconf可以读取.ini文件

a=123
b=45
c.e.f=987

输出

['a' => 123]
['b' => 45]
['c' =>['e'=>['f'=>987]]]

可以像这样阅读python吗?

thx

嗨,全部,可能我没有好好描述这个问题,对不起

首先,我确实尝试过configparser,它只解析config key=value。 但我会配置a.b.c=value,例如:

[cache]
redis.master.host='10.10.10.10'
redis.master.port='6379'
redis.master.auth='xxxx'
redis.slave_1.host='10.10.10.12'
redis.slave_1.port='6389'
redis.slave_1.auth='xxxx'

所以,我会读取像

这样的配置
cfger.get('cache', 'redis')

希望得到像

这样的结果
{'redis': {
    'master': {
           'host': '10.10.10.10',
           'port': '6379',
           'auth': 'xxxx',
        },
     'slave_1': {
           'host': '10.10.10.12',
           'port': '6389',
           'auth': 'xxxx',
        },
     }
}

希望你能知道我说的话

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。我不会那么深。使用belove片段作为样板。

$ cat some.ini 
a=123
b=45
c.e.f=987

...
>>>h = {}
>>>l = []
>>> with open('some.ini') as inifile:
...     for lines in inifile.readlines():
...         k,v = lines.split('=')
...         h[k] = int(v)
...         # or l.append([lines.strip()])  
>>> h
{'a': 123, 'c.e.f': 987, 'b': 45}

你唯一需要做的就是将'c.e.f'解析为嵌套的dict。