Почему я не могу прочитать более 16 байтов файла JPEG в Python? - PullRequest
5 голосов
/ 12 января 2011

Я пытаюсь прочитать изображение JPG на Python.

Пока у меня есть:

f = open("test.jpg")
ima = f.read(16)

print "'%s'"% (ima)

Он читает 16 байтов и отображает строку в консоли, но выглядит так, как будто яне может отображать более 32 байтов.Почему?

Когда он пытается прочитать 32 или более байтов, вывод будет таким же, как когда он читает 16 байтов.Почему я не могу прочитать более 16 байтов изображения JPEG?

Ответы [ 2 ]

11 голосов
/ 12 января 2011

Здесь две проблемы:

  1. Установить режим чтения в двоичный режим.Таким образом, функция file.read не будет пытаться преобразовать последовательности '\ r \ n'.

  2. Вы пытаетесь вывести на консоль строку с нулевым символом в конце.print Функция находит первый нулевой символ в вашей строке и завершается.Используйте binascii.hexlify, чтобы преобразовать его в гекс:


f = open("test.jpg", "rb")
ima = f.read(16)

print "%s" % (binascii.hexlify(ima))
5 голосов
/ 12 января 2011

Возможно, вам нужно установить открытый режим в двоичный:

f = open("test.jpg", "rb") # 'rb' here means "read mode, binary"

См. этот похожий вопрос для более подробного описания.

...