And*_*anu 124 python properties
给定以下格式(.properties或.ini):
propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN
Run Code Online (Sandbox Code Playgroud)
对于Java,有一个Properties类,它提供了解析/与上述格式交互的功能.
python的标准库(2.x)中有类似的东西吗?
如果没有,我还有其他选择吗?
Jam*_*vec 66
我能够使用它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');
Run Code Online (Sandbox Code Playgroud)
属性文件: ConfigFile.properties
[DatabaseSection]
database.dbname=unitTest
database.user=root
database.password=
Run Code Online (Sandbox Code Playgroud)
有关更多功能,请阅读:https://docs.python.org/2/library/configparser.html
Tra*_*ear 64
java属性文件通常也是有效的python代码.您可以将myconfig.properties文件重命名为myconfig.py.然后只需导入您的文件,就像这样
import myconfig
Run Code Online (Sandbox Code Playgroud)
并直接访问属性
print myconfig.propertyName1
Run Code Online (Sandbox Code Playgroud)
pyg*_*iel 61
对于.ini文件,ConfigParser模块提供与.ini文件兼容的格式.
无论如何,没有什么可用于解析完整的.properties文件,当我必须这样做时,我只是使用jython(我在谈论脚本).
Rob*_*rto 49
我知道这是一个非常古老的问题,但我现在需要它,我决定实现我自己的解决方案,一个纯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
Run Code Online (Sandbox Code Playgroud)
您可以更改sep
为":"以解析具有以下格式的文件:
key : value
Run Code Online (Sandbox Code Playgroud)
代码正确解析如下行:
url = "http://my-host.com"
name = Paul = Pablo
# This comment line will be ignored
Run Code Online (Sandbox Code Playgroud)
你会得到一个词典:
{"url": "http://my-host.com", "name": "Paul = Pablo" }
Run Code Online (Sandbox Code Playgroud)
如果您没有多行属性且需求非常简单,那么可以使用几行代码为您解决:
档案t.properties
:
a=b
c=d
e=f
Run Code Online (Sandbox Code Playgroud)
Python代码:
with open("t.properties") as f:
l = [line.split("=") for line in f.readlines()]
d = {key.strip(): value.strip() for key, value in l}
Run Code Online (Sandbox Code Playgroud)
小智 5
我用过这个,这个库非常有用
from pyjavaproperties import Properties
p = Properties()
p.load(open('test.properties'))
p.list()
print(p)
print(p.items())
print(p['name3'])
p['name3'] = 'changed = value'
Run Code Online (Sandbox Code Playgroud)