Как обрабатывать пустые значения в конфигурационных файлах с помощью ConfigParser?

Как я могу проанализировать тэги без значения в INI-файле с модулем Python configparser?

Например, у меня есть следующие INI, и мне нужно парс рб. В некоторых INI-файлах rb имеет целочисленные значения, а в некоторых вообще нет значений, как в примере ниже. Как я могу сделать это с configparser без получения valueerror? Я использую функцию getint

[section]
person=name
id=000
rb=
12
задан user151019 25 July 2013 в 12:07
поделиться

3 ответа

Возможно, используйте блок 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')]
6
ответ дан 2 December 2019 в 07:20
поделиться

Вместо использования getint(), используйте get() для получения опции как строка. Затем конвертируйте в int самостоятельно:

rb = parser.get("section", "rb")
if rb:
    rb = int(rb)
3
ответ дан 2 December 2019 в 07:20
поделиться

При создании объекта парсера необходимо установить allow_no_value=True необязательный аргумент.

12
ответ дан 2 December 2019 в 07:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: