如何在Python中逐字节读取文件以及如何将bytelist打印为二进制文件?

zap*_*lec 27 python file-io byte

我正在尝试逐字节读取文件,但我不知道该怎么做.我试着这样做:

file = open(filename, 'rb')
while 1:
   byte = file.read(8)
   # Do something...
Run Code Online (Sandbox Code Playgroud)

那么这会使变量字节在每个循环开始时包含8个下一位吗?这些字节究竟是什么并不重要.唯一重要的是我需要读取8位堆栈中的文件.

编辑:

此外,我在列表中收集这些字节,我想打印它们,以便它们不打印为ASCII字符,但作为原始字节,即当我打印该bytelist时,它将结果显示为

['10010101', '00011100', .... ]
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 36

要读取一个字节:

file.read(1)
Run Code Online (Sandbox Code Playgroud)

8位是一个字节.


Sco*_*ths 18

要回答问题的第二部分,要转换为二进制文件,您可以使用格式字符串ord函数:

>>> byte = 'a'
>>> '{0:08b}'.format(ord(byte))
'01100001'
Run Code Online (Sandbox Code Playgroud)

请注意,格式填充正确的前导零数,这似乎是您的要求.此方法需要Python 2.6或更高版本.


ken*_*ytm 15

您显示的代码将读取8 个字节.你可以用

with open(filename, 'rb') as f:
   while 1:
      byte_s = f.read(1)
      if not byte_s:
         break
      byte = byte_s[0]
      ...
Run Code Online (Sandbox Code Playgroud)