如何在python中读取多行.properties文件

ghm*_*014 4 python properties multiline

我正在尝试读取java多行i18n属性文件.有这样的行:

messages.welcome=Hello\
 World!
messages.bye=bye
Run Code Online (Sandbox Code Playgroud)

使用此代码:

import configobj
properties = configobj.ConfigObj(propertyFileName)
Run Code Online (Sandbox Code Playgroud)

但是对于多行值,它会失败.

有什么建议?

Gre*_*egg 6

根据ConfigObj文档,configobj要求您用三引号括起多行值:

包含换行符(多行值)的值可以用三引号括起来.如果值包含两种类型的引号,也可以使用这些.列表成员不能被三重引号包围:

如果修改属性文件是不可能的,我建议使用configparser:

在配置解析器中,值可以跨越多行,只要它们比包含它们的键缩进更多.默认情况下,解析器还允许空行成为值的一部分.

这是一个概念的快速证明:

#!/usr/bin/env python
# coding: utf-8

from __future__ import print_function

try:
    import ConfigParser as configparser
except ImportError:
    import configparser

try:
    import StringIO
except ImportError:
    import io.StringIO as StringIO

test_ini = """
[some_section]
messages.welcome=Hello\
 World
messages.bye=bye
"""
config = configparser.ConfigParser()
config.readfp(StringIO.StringIO(test_ini))
print(config.items('some_section'))
Run Code Online (Sandbox Code Playgroud)

输出:

[('messages.welcome','Hello World'),('messages.bye','bye')]