【问题标题】:MissingSectionHeaderError: File contains no section headers.(configparser)MissingSectionHeaderError:文件不包含节标题。(configparser)
【发布时间】:2017-02-11 10:03:03
【问题描述】:

我正在使用 configparser 来自动读取和修改名为“streamer.conf”的文件 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'

可能出了什么问题?任何帮助表示赞赏。

【问题讨论】:

    标签: python python-2.7 configuration configuration-files configparser


    【解决方案1】:

    只需指定正确的编码

    config.read(config_file_path, encoding='utf-8-sig')
    
    • “utf-8-sig”用于带有 BOM 的 UTF-8
    • “utf-8”表示不带 BOM 的 UTF-8

    【讨论】:

      【解决方案2】:

      正如其他答案中提到的,配置文件必须是 INI format,但您看到的实际错误是由于请求的配置文件缺少任何部分标题(如错误消息中提到的)-这些名称括在方括号中,为 INI 文件的一部分提供标头。默认标题为[DEFAULT] 例如

      [DEFAULT]
       config_item1='something'
       config_item2=2
      

      【讨论】:

        【解决方案3】:

        我在创建pip.conf 文件时收到了同样的错误消息。就我而言,我无意中创建了一个带有 BOM(字节顺序标记)的 UTF-8 文件,而不是一个普通的 UTF-8 文件(没有 BOM)。

        因此,请检查以确保您拥有纯文本文件。如果不确定,可以在十六进制编辑器中打开文件并检查第一个字节。

        【讨论】:

          【解决方案4】:

          ConfigParser 使用 BOM(xef xbb xbf) 解析 UTF-8 文件

              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)
          

          【讨论】:

          • 这个答案很有用,也许可以添加解释 BOM 是什么以及第一行如何删除它?
          【解决方案5】:

          您没有包含streamer.conf,但从错误消息来看,它的格式不正确。 configparser 用于解析“INI”文件:

          [section1]
          setting1 = value
          setting2 = value
          
          [section2]
          setting3 = value
          setting1 = value
          

          等等

          【讨论】:

          • J 厄尔斯:我明白了!但是有没有办法可以处理 .conf 文件?
          • ".conf 文件" 没有具体含义。鉴于错误消息中的一个微小的 sn-p,它不是 XML、JSON、INI、CSV。您很可能必须为此编写自己的文件解析器。
          猜你喜欢
          • 2012-10-28
          • 2019-11-20
          • 2019-06-07
          • 1970-01-01
          • 2022-10-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多