Вы можете сделать это в одной строке кода.
В Python 3, добавьте заголовок поддельного раздела к данным вашего файла конфигурации и передайте его read_string()
.
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read()) # This line does the trick.
Вы также можете использовать itertools.chain()
для имитации заголовка раздела для read_file()
.Это может быть более эффективным в использовании памяти, чем описанный выше подход, который может быть полезен, если у вас большие конфигурационные файлы в ограниченной среде выполнения.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines) # This line does the trick.
parser.read_file(lines)
В python 2 добавьте заголовок поддельного раздела к вашему файлу конфигурацииданные, оберните результат в объект StringIO
и передайте его в readfp()
.
from ConfigParser import ConfigParser
from StringIO import StringIO
parser = ConfigParser()
with open("foo.conf") as stream:
stream = StringIO("[top]\n" + stream.read()) # This line does the trick.
parser.readfp(stream)
При любом из этих подходов ваши настройки конфигурациибудет доступен в parser.items('top')
.
Вы также можете использовать StringIO в Python 3, возможно, для совместимости как со старыми, так и с новыми интерпретаторами Python, но обратите внимание, что теперь он находится в пакете io
и readfp()
теперь устарела.
В качестве альтернативы, вы можете рассмотреть возможность использования TOML парсера вместо ConfigParser.