【问题标题】:can python read .ini file like php Yaconf [duplicate]python可以像php Yaconf一样读取.ini文件[重复]
【发布时间】:2023-03-18 18:32:02
【问题描述】:

php Yaconf 可以读取 .ini 文件

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

输出喜欢

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

python 可以这样读取吗?

谢谢


大家好,可能是我没有很好地描述这个问题,抱歉

首先,我尝试了 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',
        },
     }
}

希望你能知道我说的是什么

【问题讨论】:

  • 当然可以,如果您对其进行编程的话。您是否尝试过可以向我们展示的东西?
  • @LysandrosNikolaou 感谢您的回复!我试过configparser。但是,它只是解析 key=value,而不是 key1.key2.key3=value
  • 也许这会有所帮助(第四个答案)stackoverflow.com/questions/8884188/…
  • 我认为您正在寻找的是 .ini 文件中的部分。你应该看看configObj
  • @Tony_Wang,Lysandros 是对的:您提出的问题的答案是“configparser”。如果它不能解决您遇到的问题,请编辑您的问题以更清楚地提出问题,并确保说明configparser 失败的原因。 (您尝试过configparser 吗?发生了什么?如果您编辑您的问题,请回答这两个问题。)

标签: php python ini


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复!是否有任何包或模块可以像 PHP 中的 Yaconf 一样?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 1970-01-01
  • 2019-04-22
  • 1970-01-01
  • 2013-04-18
  • 2015-10-02
相关资源
最近更新 更多