Ви можете зробити це в одному рядку коду.
У python 3 додайте підроблений заголовок розділу до даних конфігураційного файлу та передайте його read_string().
from configparser import ConfigParser
parser = ConfigParser()
with open("foo.conf") as stream:
parser.read_string("[top]\n" + stream.read())
Ви також можете використовувати itertools.chain()для імітації заголовка розділу для read_file(). Це може бути більш ефективним для пам'яті, ніж описаний вище підхід, що може бути корисно, якщо у вас є великі конфігураційні файли в обмеженому середовищі виконання.
from configparser import ConfigParser
from itertools import chain
parser = ConfigParser()
with open("foo.conf") as lines:
lines = chain(("[top]",), lines)
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())
parser.readfp(stream)
З будь-яким із цих підходів ваші налаштування конфігурації будуть доступні у parser.items('top').
Ви можете використовувати StringIO і в python 3, можливо, для сумісності як зі старим, так і з новим інтерпретаторами python, але зверніть увагу, що він зараз живе в ioпакеті і readfp()зараз застарів.
Як варіант, ви можете розглянути можливість використання синтаксичного аналізатора TOML замість ConfigParser.