将二进制文件作为整数读入缓冲区,然后切片



在python中,我如何将二进制文件加载到缓冲区中,然后将单个字节读取为数字而不是字符串?

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

可选的buffer参数描述如下:

buffering是一个可选整数,用于设置缓冲策略。传入0表示关闭缓冲(仅允许在二进制模式下),传入1表示选择行缓冲(仅在文本模式下可用),并选择一个> 1的整数指示固定大小的块缓冲区的大小。当没有缓冲时参数时,默认缓冲策略的工作方式如下:

•二进制文件被缓冲在固定大小的块中;的大小缓冲区的选择是使用启发式方法来确定底层的设备的"块大小",并返回到DEFAULT_BUFFER_SIZE。在许多在系统中,缓冲区通常是4096或8192字节长。

Python io.open

如果你真的很想操作它们,你可以把每一行都转换成一个字节数组

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)

相关内容

最新更新