在python中,如何将二进制文件加载到缓冲区中,然后将单个字节读取为数字而不是字符串。?
答案 0 :(得分:3)
with open('binary.txt',"rb",buffering=-1) as f:
for line in f:
for c in line:
print(c)
使用如下文件:
"abcde"
可生产
>>>
97
98
99
100
101
此处描述了可选的缓冲参数:
buffering是一个可选的整数,用于设置缓冲策略。 传递0以切换缓冲关闭(仅允许在二进制模式下),1到 选择行缓冲(仅在文本模式下可用)和整数> 1 指示固定大小的块缓冲区的大小。什么时候没有缓冲 给出了参数,默认缓冲策略的工作方式如下:
•二进制文件以固定大小的块缓冲;的大小 使用启发式试图确定底层的缓冲区 设备的“块大小”并回退到DEFAULT_BUFFER_SIZE。很多 系统,缓冲区通常为4096或8192字节长。
如果你非常热衷于计划操作它们,你可以将每一行转换为bytearray
line = bytearray(line)
要回答您的评论,这演示了如何过滤掉您迭代的字符:
with open('binary.txt',"rb",buffering=-1) as f:
for line in f:
for c in [b for b in line if b in range(663,765)]: #in a certain range
print(c)
for c in [b for b in line if b == 5]: #is a certain number
print(c)