给定以下格式(.properties或.ini):
propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN
对于Java,有一个Properties类,它提供解析上述格式/与之交互的功能。
在python的标准库(2.x)中有类似的东西吗?
如果没有,我还有其他选择吗?
发布于 2010-08-29 23:39:57
对于.ini
文件,有提供与.ini
文件兼容的格式的configparser
模块。
无论如何,没有任何东西可以解析完整的.properties
文件,当我不得不这样做时,我只是简单地使用jython (我说的是脚本)。
发布于 2014-10-07 00:59:40
我能够让它与ConfigParser
一起工作,没有人展示任何关于如何做到这一点的示例,所以这里是一个属性文件的简单python阅读器和属性文件示例。注意,扩展名仍然是.properties
,但我必须添加一个与您在.ini文件中看到的类似的节标题...有点像私生子,但很管用。
python文件:PythonPropertyReader.py
#!/usr/bin/python
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('ConfigFile.properties')
print config.get('DatabaseSection', 'database.dbname');
属性文件:ConfigFile.properties
[DatabaseSection]
database.dbname=unitTest
database.user=root
database.password=
有关更多功能,请阅读:https://docs.python.org/2/library/configparser.html
发布于 2015-08-06 17:47:06
我知道这是一个非常古老的问题,但我现在就需要它,我决定实现我自己的解决方案,一个纯python解决方案,它涵盖了大多数用例(不是所有):
def load_properties(filepath, sep='=', comment_char='#'):
"""
Read the file passed as parameter as a properties file.
"""
props = {}
with open(filepath, "rt") as f:
for line in f:
l = line.strip()
if l and not l.startswith(comment_char):
key_value = l.split(sep)
key = key_value[0].strip()
value = sep.join(key_value[1:]).strip().strip('"')
props[key] = value
return props
您可以将sep
更改为':‘,以解析以下格式的文件:
key : value
代码正确地解析行,如下所示:
url = "http://my-host.com"
name = Paul = Pablo
# This comment line will be ignored
你会得到一个字典:
{"url": "http://my-host.com", "name": "Paul = Pablo" }
https://stackoverflow.com/questions/3595363
复制相似问题