2017-04-14 56 views
0

PHP Yaconf可以讀取.ini文件可以閱讀蟒蛇像PHP Yaconf .ini文件

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

輸出像

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

可以閱讀的Python這樣?

THX


嗨,所有的,可能是我沒有描述的問題很好,對不起,那

首先,我沒試過configparser,剛剛解析配置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', 
     }, 
    } 
} 

希望你能明白我的說

+0

它當然可以,如果你編程它這樣做。你有沒有嘗試過可以向我們展示的東西? –

+0

@LysandrosNikolaou thx您的回覆!我試過configparser。然而,它只是解析鍵=值,而不是key1.key2.key3 =值 –

+1

也許這可能是有用的(第4個答案)http://stackoverflow.com/questions/8884188/how-to-read-and-write-ini -file-with-python3 – Astrom

回答

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'解析爲嵌套字典。

+0

Thx for your reply!任何包或模塊可以像PHP中的Yaconf一樣嗎? –