Файл Revit.ini - MissingSectionHeaderError: Файл не содержит заголовков разделов.файл: Revit.ini, строка: 1 '\ xff \ xfe \ r \ x00 \ n' - PullRequest
1 голос
/ 11 июля 2019

Я пытаюсь отредактировать мой файл Revit.ini с помощью python, однако я продолжаю получать сообщение об ошибке ниже.Я бился головой о стену на лучшую часть дня.Любая помощь ценится в этом.

Я работал с ConfigParser на python 2.7 и просматривал их документы здесь , так как они, кажется, подходят для работы с * .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 (с которой я еще совсем не знаком. Я собираюсь кое-что почитать), что означает, что мне, вероятно, придется его декодировать, а затем перекодировать, что мне тоже нужночитать о том, что делать.

1 Ответ

0 голосов
/ 16 июля 2019

Я думаю, что это как-то связано с кодировкой UTF

Да, это так.Сообщение об ошибке показывает первые два байта файла как \xff\xfe, что является меткой порядка байтов (BOM) для текстового файла, содержащего символы Unicode, закодированные как UTF-16LE (little-endian).Синтаксическому анализатору конфигурации требуется небольшая помощь в понимании таких файлов, поэтому мы можем попросить модуль 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 года), после чего ожидается, что многие пакеты перестанут поддерживать его, поэтому вам действительно стоит подумать о переходе на Python_3.

...