如何使用ConfigParser处理配置文件中的空值?

16 投票
5 回答
34475 浏览
提问于 2025-04-16 03:24

我该如何用Python的configparser模块解析ini文件中没有值的标签呢?

比如,我有一个ini文件,里面有一个叫rb的标签。在一些ini文件中,rb有整数值,而在另一些文件中,rb根本没有值,就像下面这个例子一样。我该如何用configparser来处理这个问题,而不出现值错误呢?我使用的是getint函数。

[section]
person=name
id=000
rb=

5 个回答

4

与其使用 getint(),不如用 get() 来获取选项的字符串。然后你自己把它转换成整数:

rb = parser.get("section", "rb")
if rb:
    rb = int(rb)
15

在创建解析器对象的时候,你需要设置一个可选的参数 allow_no_value=True

7

你可以试试用一个 try...except 结构:

    try:
        value=parser.getint(section,option)
    except ValueError:
        value=parser.get(section,option)

比如说:

import ConfigParser

filename='config'
parser=ConfigParser.SafeConfigParser()
parser.read([filename])
print(parser.sections())
# ['section']
for section in parser.sections():
    print(parser.options(section))
    # ['id', 'rb', 'person']
    for option in parser.options(section):
        try:
            value=parser.getint(section,option)
        except ValueError:
            value=parser.get(section,option)
        print(option,value,type(value))
        # ('id', 0, <type 'int'>)
        # ('rb', '', <type 'str'>)
        # ('person', 'name', <type 'str'>) 
print(parser.items('section'))
# [('id', '000'), ('rb', ''), ('person', 'name')]

撰写回答