Последовательности байтов в Python представлены с использованием строк. Последовательность букв и символов, которые вы видите при распечатке последовательности байтов, является просто печатным представлением байтов, которое содержит строка. Чтобы использовать эти данные, вы обычно манипулируете ими для получения более полезного представления.
Вы можете использовать ord(x)
или bin(x)
для получения десятичного и двоичного представлений соответственно:
>>> f = open('/tmp/IMG_5982.JPG', 'rb')
>>> data = f.read(10)
>>> data
'\x00\x00II*\x00\x08\x00\x00\x00'
>>> data[2]
'I'
>>> ord(data[2])
73
>>> hex(ord(data[2]))
'0x49'
>>> bin(ord(data[2]))
'0b1001001'
>>> f.close()
Флаг 'b'
, который вы передаете open()
, ничего не говорит Python о том, как представлять содержимое файла. С Документы :
Добавьте 'b' к режиму, чтобы открыть файл в двоичном режиме, в системах, которые различают двоичные и текстовые файлы; в системах, которые не имеют этого различия, добавление 'b' не имеет никакого эффекта.
Если вы просто не хотите посмотреть, как выглядят двоичные данные из файла, в книге Марка Пилигрима, Dive Into Python, есть пример работы с двоичными форматами файлов. Пример показывает, как вы можете прочитать теги IDv1 из файла MP3. Сайт книги, кажется, не работает, поэтому я делаю ссылку на зеркало.