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

AKM*_*AKM 12 python configparser

如何使用python configparser模块解析ini文件中没有值的标签?

例如,我有以下ini,我需要解析rb.在一些ini文件中,rb具有整数值,而在某些文件中没有任何值,如下例所示.如何在没有获得valueerror的情况下使用configparser执行此操作?我使用getint函数

[section]
person=name
id=000
rb=
Run Code Online (Sandbox Code Playgroud)

San*_*nta 12

allow_no_value=True创建解析器对象时需要设置可选参数.

  • 看起来[论点](http://docs.python.org/library/configparser.html#ConfigParser.RawConfigParser)仅在Python 2.7中添加. (3认同)
  • 如果`=`仍然存在,那么`allow_no_value = True`与空值无关,它与使用空值的getint的能力更少有关. (3认同)
  • 然后问题是如何使用ConfigParser for 2.6处理空值. (2认同)

unu*_*tbu 6

也许使用一个try...except块:

    try:
        value=parser.getint(section,option)
    except ValueError:
        value=parser.get(section,option)
Run Code Online (Sandbox Code Playgroud)

例如:

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')]
Run Code Online (Sandbox Code Playgroud)

  • 我的 python 版本上是 ConfigParser.NoOptionError 。 (3认同)