MissingSectionHeaderError: файл не содержит заголовков разделов. (configparser)

Я использую configparser для автоматического чтения и изменения файла conf с именем «streamer.conf». Я делаю это:

import configparser

config = configparser.ConfigParser()
config.read('C:/Users/../Desktop/streamer.conf')

И затем он распадается с этим сообщением об ошибке:

MissingSectionHeaderError: File contains no section headers.
file: 'C:/Users/../Desktop/streamer.conf', line: 1
u'input{\n'

Что может быть не так? Любая помощь приветствуется.


person Arij SEDIRI    schedule 03.10.2016    source источник


Ответы (5)


просто укажите правильную кодировку

config.read(config_file_path, encoding='utf-8-sig')
  • "utf-8-sig" для UTF-8 со спецификацией
  • "utf-8" для UTF-8 без спецификации
person Vladimir    schedule 04.10.2017

Я получил такое же сообщение об ошибке, когда создал файл pip.conf. В моем случае я непреднамеренно создал файл UTF-8 со спецификацией (маркер порядка байтов) вместо простого файла UTF-8 (без спецификации).

Итак, убедитесь, что у вас есть обычный текстовый файл. Если вы не уверены, вы можете открыть файл в шестнадцатеричном редакторе и проверить первые байты.

person Ryan H.    schedule 08.11.2016

ConfigParser анализирует файл UTF-8 со спецификацией (xef xbb xbf)

    u = open("setting.ini").read().decode("utf-8-sig").encode("utf-8")
    fp = tempfile.TemporaryFile()
    fp.write(u)
    fp.seek(0)

    conf = ConfigParser.ConfigParser()
    conf.readfp(fp)
person KunMing Xie    schedule 28.12.2016
comment
Этот ответ полезен, может быть, добавить объяснение того, что такое спецификация и как ее удаляет первая строка? - person SNygard; 28.01.2017

Как упоминалось в других ответах, файл конфигурации должен быть INI формат, но фактическая ошибка, которую вы видите, связана с тем, что в запрошенном файле конфигурации отсутствуют какие-либо заголовки — это имена, заключенные в квадратные скобки, которые представляют собой заголовок для раздела INI-файла. Заголовок по умолчанию [DEFAULT], например.

[DEFAULT]
 config_item1='something'
 config_item2=2
person Pierz    schedule 27.05.2020

Вы не включили streamer.conf, но судя по сообщению об ошибке, это неправильный формат. configparser используется для разбора файлов "INI":

[section1]
setting1 = value
setting2 = value

[section2]
setting3 = value
setting1 = value

и Т. Д.

person J Earls    schedule 03.10.2016
comment
Джей Эрлз: Я понял! Но есть ли способ, которым я могу работать с файлами .conf? - person Arij SEDIRI; 03.10.2016
comment
Файлы .conf не имеют особого значения. Учитывая один крошечный фрагмент сообщения об ошибке, это не XML, JSON, INI, CSV. Для этого вам, скорее всего, придется написать собственный парсер файлов. - person J Earls; 04.10.2016