首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python中的属性文件(类似于Java属性)

python中的属性文件(类似于Java属性)
EN

Stack Overflow用户
提问于 2010-08-29 23:36:29
回答 25查看 210.3K关注 0票数 148

给定以下格式(.properties.ini):

代码语言:javascript
复制
propertyName1=propertyValue1
propertyName2=propertyValue2
...
propertyNameN=propertyValueN

对于Java,有一个Properties类,它提供解析上述格式/与之交互的功能。

python标准库(2.x)中有类似的东西吗?

如果没有,我还有其他选择吗?

EN

回答 25

Stack Overflow用户

回答已采纳

发布于 2010-08-29 23:39:57

对于.ini文件,有提供与.ini文件兼容的格式的configparser模块。

无论如何,没有任何东西可以解析完整的.properties文件,当我不得不这样做时,我只是简单地使用jython (我说的是脚本)。

票数 73
EN

Stack Overflow用户

发布于 2014-10-07 00:59:40

我能够让它与ConfigParser一起工作,没有人展示任何关于如何做到这一点的示例,所以这里是一个属性文件的简单python阅读器和属性文件示例。注意,扩展名仍然是.properties,但我必须添加一个与您在.ini文件中看到的类似的节标题...有点像私生子,但很管用。

python文件:PythonPropertyReader.py

代码语言:javascript
复制
#!/usr/bin/python    
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('ConfigFile.properties')

print config.get('DatabaseSection', 'database.dbname');

属性文件:ConfigFile.properties

代码语言:javascript
复制
[DatabaseSection]
database.dbname=unitTest
database.user=root
database.password=

有关更多功能,请阅读:https://docs.python.org/2/library/configparser.html

票数 84
EN

Stack Overflow用户

发布于 2015-08-06 17:47:06

我知道这是一个非常古老的问题,但我现在就需要它,我决定实现我自己的解决方案,一个纯python解决方案,它涵盖了大多数用例(不是所有):

代码语言:javascript
复制
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更改为':‘,以解析以下格式的文件:

代码语言:javascript
复制
key : value

代码正确地解析行,如下所示:

代码语言:javascript
复制
url = "http://my-host.com"
name = Paul = Pablo
# This comment line will be ignored

你会得到一个字典:

代码语言:javascript
复制
{"url": "http://my-host.com", "name": "Paul = Pablo" }
票数 66
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3595363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档