我一直在python 2.7上使用ConfigParser,并通过了他们的文档here,因为在尝试使用* .ini文件时,它们似乎是必经之路。当我创建自己的* .ini文件进行测试时,一切正常,但是当我尝试在其他* .ini上运行测试时,出现错误。
到目前为止我的代码
import ConfigParser
config = ConfigParser.RawConfigParser()
config.read('Revit.ini')
我的错误
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "C:\Python27\lib\ConfigParser.py", line 305, in read
self._read(fp, filename)
File "C:\Python27\lib\ConfigParser.py", line 512, in _read
raise MissingSectionHeaderError(fpname, lineno, line)
MissingSectionHeaderError: File contains no section headers.
file: Revit.ini, line: 1
'\xff\xfe\r\x00\n'
任何帮助都将受到赞赏。我认为它与UTF编码有关(目前我还不熟悉。我打算对此做一些阅读),这意味着我可能必须对其进行解码,然后重新编码,这也是我需要的阅读有关该怎么做的信息。
答案 0 :(得分:0)
我认为这与UTF编码有关
是的,确实如此。错误消息将文件的前两个字节显示为\xff\xfe
,这是文本文件的字节顺序标记(BOM),该文本文件包含编码为UTF-16LE(小尾数)的Unicode字符。配置解析器在理解此类文件方面需要一点帮助,因此我们可以要求io
模块伸出援助之手:
config = configparser.ConfigParser()
with io.open('revit.ini', mode='r', encoding='utf-16') as fp:
config.read_file(fp)
请注意,以上内容适用于Python_3。 Python_2的生命周期(即2020年1月)还不到六个月,此后许多软件包都将放弃对它的支持,因此您确实应该考虑过渡到Python_3。