Как считать байт файла байтом в Python и как распечатать bytelist как двоичный файл?

Я пытаюсь считать байт файла байтом, но я не уверен, как сделать это. Я пытаюсь сделать это как этот:

file = open(filename, 'rb')
while 1:
   byte = file.read(8)
   # Do something...

Это делает переменный байт для содержания 8 следующих битов в начале каждого цикла? Не имеет значения, каковы те байты действительно. Единственная вещь, которая вопросы - то, что я должен считать файл в 8-разрядных стеках.

Править:

Также я собираю те байты в списке, и я хотел бы распечатать их так, чтобы они не распечатывали как символы ASCII, но как необработанные байты т.е. когда я печатаю это bytelist, он дает результат как

['10010101', '00011100', .... ]
27
задан skaffman 2 December 2010 в 08:07
поделиться

3 ответа

Чтобы ответить на вторую часть вашего вопроса, для преобразования в двоичный формат вы можете использовать строку формата и функцию ord :

>>> byte = 'a'
>>> '{0:08b}'.format(ord(byte))
'01100001'

Примечание что формат заполняется правильным количеством ведущих нулей, что, по-видимому, является вашим требованием. Для этого метода требуется Python 2.6 или новее.

18
ответ дан 28 November 2019 в 04:32
поделиться

Для чтения одного байта:

file.read(1)

8 бит — это один байт.

36
ответ дан 28 November 2019 в 04:32
поделиться

Показанный вами код будет читать 8 байт . Вы можете использовать

with open(filename, 'rb') as f:
   while 1:
      byte_s = f.read(1)
      if not byte_s:
         break
      byte = byte_s[0]
      ...
15
ответ дан 28 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: