utf-16 поиск файлов в python. как?

По какой-то причине я не могу найти файл utf16. Он создает «UnicodeException: поток UTF-16 не начинается с спецификации». Мой код:

f = codecs.open(ai_file, 'r', 'utf-16') seek = self.ai_map[self._cbClass.Text] #seek is valid int f.seek(seek) while True: ln = f.readline().strip() 

Я пробовал случайные вещи, как первое чтение чего-то из потока, не помогло. Я проверил смещение, которое требуется использовать hex editor – строка начинается с символа, а не с нулевым байтом (я думаю, его хороший знак, правильно?) Итак, как искать utf-16 в python?

  • Python - Python 3.1 не может обрабатывать кодированные файлы UTF-16?
  • Python UTF-16 CSV-ридер
  • Преобразование UTF-8 с спецификацией в UTF-8 без спецификации в Python
  • Как получить надежный счет символа Юникода в Python?
  • специфичная для платформы семантика Unicode в Python 2.7
  • преобразование utf-16 -> utf-8 И удалить спецификацию
  • One Solution collect form web for “utf-16 поиск файлов в python. как?”

    Ну, сообщение об ошибке сообщает вам, почему: он не читает знак байтового байта. Значок порядка байтов находится в начале файла. Без считывания знака порядка байтов декодер UTF-16 не может знать, в каком порядке находятся байты. Очевидно, он делает это лениво, когда вы читаете первый раз, а не когда вы открываете файл – или он предполагает что seek() запускает новый поток UTF-16.

    Если в вашем файле нет спецификации, это определенно проблема, и вы должны указать порядок байтов при открытии файла (см. № 2 ниже). В противном случае я вижу два возможных решения:

    1. Прочитайте первые два байта файла, чтобы получить спецификацию, прежде чем искать. Вы, кажется, говорите, что это не сработало, указывая, что, возможно, он ожидает свежий поток UTF-16 после поиска, так что:

    2. Укажите порядок байтов явно, используя utf-16-le или utf-16-be в качестве кодировки при открытии файла.

    Python - лучший язык программирования в мире.