Как декодировать файл DAT в python?

Я пытаюсь прочитать байты из файла DAT. Я знаю, что данные должны быть в двоичном или шестнадцатеричном формате. Но когда я пытаюсь прочитать байты, он печатает странные символы. Я предполагаю, что это значения ascii. Я пытался преобразовать их, но я продолжаю получать сообщение об ошибке, что «str» не может быть преобразован. Кто-нибудь знает, как я могу его расшифровать? И является ли read() правильной функцией для этого?

import time
import binascii
import csv
import serial

with open('Example CARESCAPE Datalog.dat') as binary_file:
    for num in range(1,10):
        data = binary_file.readline()
        print(data)

Вот ссылка на скриншот странных символов, которые я получаю


person Shawn    schedule 16.03.2018    source источник
comment
В двоичном файле не будет никакого полезного понятия разрывов строк. Таким образом, readline() не будет работать должным образом.   -  person    schedule 17.03.2018
comment
Насколько я понимаю, это не совсем так (хотя вы правы в том, что это может ввести в заблуждение): docs.python.org/3/library/io.html#io.IOBase.readline   -  person sam    schedule 17.03.2018
comment
Я лутц, ты прав. Я изменил его на read(), чтобы получить отдельные байты   -  person Shawn    schedule 17.03.2018


Ответы (1)


Если ваш файл .dat не является текстовым, вы должны открыть его как двоичный файл с помощью 'b' (согласно Документация по Python):

with open('Example CARESCAPE Datalog.dat', 'b') as binary_file:

Вам придется самостоятельно декодировать байты:

Файлы, открытые в двоичном режиме (включая «b» в аргументе режима), возвращают содержимое в виде байтовых объектов без какого-либо декодирования.

person sam    schedule 16.03.2018
comment
Идеальный! Работал на меня. Изменил его на open('Example CARESCAPE Datalog.dat', 'rb') as binary_file: - person Shawn; 16.03.2018