чтение файла данных в python показывает UnicodeDecodeError (File ) - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь открыть файл dat, но сталкиваюсь с ошибкой UnicodeDecode.

см. Приведенный ниже код, который я пробовал.

with open(dat_file, 'r') as f:  (or)  with open(dat_file, 'r', errors = 'ignore') as f
    print('type of f :', type(f)) # for ref
    print('f : ', f) # for ref
    
    data = f.read()
    print(data)
    
    for lines in data:
        print(lines)
    
Error

type of f : <class '_io.TextIOWrapper'>
f  : <_io.TextIOWrapper name='...\\dat_file\\test.dat' mode='r' encoding='cp1252'>

Traceback (most recent call last):

  File "<ipython-input-30-64afc3b0473f>", line 5, in <module>
    data = f.read()

  File "...anaconda3\lib\encodings\cp1252.py", line 23, in decode
    return codecs.charmap_decode(input,self.errors,decoding_table)[0]

UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 22332: character maps to <undefined>

Когда я открываю data in Variable explorer, это выглядит как ..

enter image description here

Требование

Alternate soln:

, если я пытаюсь преобразовать the dat file to .mat файл using matlab.

, если я открою файл мата, используя scipy.io как f = sio.loadmat(file.mat).

если я открою проводник переменных, он откроется как диктовка, и я смогу продолжить свою работу через этот словарь. f = enter image description here

Требование:

Но я хочу открыть файл данных в python напрямую, я смотрю на ошибка при чтении в python.

Любые выводы будут очень полезны.

1 Ответ

0 голосов
/ 25 марта 2020

Попробуйте изменить режим на «rb», b означает, что python будет считывать побайтово объект вместо объекта char-by-char. Поскольку (unicode-) char может состоять из нескольких байтов, может произойти чтение некоторой байтовой комбинации, которая не соответствует Unicode-символу, что приводит к ошибке.

Для получения дополнительной информации введите help (open) в интерактивной python консоли. help () вообще отличный ресурс:)

...