0

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

4

1 回答 1

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 字节长。

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)
于 2013-05-02T09:31:19.820 回答