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

2024-01-07

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

messages.welcome=Hello\
 World!
messages.bye=bye

使用此代码:

import configobj
properties = configobj.ConfigObj(propertyFileName)

但对于多行值,它会失败。

有什么建议么?


根据ConfigObj 文档 http://www.voidspace.org.uk/python/configobj.html#the-config-file-format, configobj要求您将多行值括在三引号中:

包含换行符的值 (多行值)可以被包围 通过三重引号。这些也可以 如果一个值包含两种类型,则使用 引号。名单成员不能 用三引号括起来:

如果无法修改属性文件,我建议使用配置解析器 http://docs.python.org/dev/library/configparser.html:

在配置解析器中,值可以跨越 多行,只要它们是 缩进比所持有的键多 他们。默认情况下解析器还让 空行作为值的一部分。

这是概念的快速证明:

#!/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'))

Output:

[('messages.welcome', '你好世界'), ('消息.再见', '再见')]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Python中读取多行.properties文件 的相关文章

随机推荐