Python configparser не будет принимать ключи без значений - PullRequest
15 голосов
/ 29 февраля 2012

Итак, я пишу скрипт, который читает из файла конфигурации, и я хочу использовать его в точности так, как сконфигурирован configparser, как описано здесь: http://docs.python.org/release/3.2.1/library/configparser.html

Я использую Python 3.2.1.После завершения сценарий будет работать на компьютере под управлением Windows 2008 R2 с той же версией Python или при условии совместимости с самой последней на тот момент версией.

#!/user/bin/env python
import configparser

config = configparser.ConfigParser()
config.read('c:\exclude.ini')
config.sections()

Это прекрасно работает для чтения файла exclude.iniфайл - если у меня нет значения без ключа.Думая, что, возможно, я что-то делаю не так, попытался разобрать приведенный здесь пример: http://docs.python.org/release/3.2.1/library/configparser.html#supported-ini-file-structure

Каждый раз он выдает следующее:

File "C:\Python32\lib\configparser.py", line 1081, in _read
    raise e
configparser.ParsingError: Source contains parsing errors: c:\exclude.ini
    [line 20]: 'key_without_value\n'

Я в растерянности ... ЯЯ буквально копирую / вставляю пример кода из документации для конкретной версии Python, которую я использую, и она не работает, как следует.Я могу только предположить, что я что-то упустил, так как я не могу найти никого с подобной проблемой.

Ответы [ 2 ]

17 голосов
/ 29 февраля 2012

Конструктор ConfigParser имеет ключевое слово аргумент allow_no_value со значением по умолчанию False.

Попробуйте установить значение true, и я уверен, что это сработает для вас.

0 голосов
/ 05 апреля 2016
class RawConfigParser:
def __init__(self, defaults=None, dict_type=_default_dict,
             allow_no_value=False):
    self._dict = dict_type
    self._sections = self._dict()
    self._defaults = self._dict()
    if allow_no_value:
        self._optcre = self.OPTCRE_NV
    else:
        self._optcre = self.OPTCRE
    if defaults:
        for key, value in defaults.items():
            self._defaults[self.optionxform(key)] = value

import ConfigParser

cf = ConfigParser.ConfigParser (allow_no_value = True)

...