在Python中从二进制文件读取4字节整数

7 投票
2 回答
12481 浏览
提问于 2025-04-17 21:08

我有一些二进制文件(有些可能很大,达到100MB),里面包含4字节的整数。

有没有人能提供一段代码,演示如何提取每个4字节的整数,直到文件结束?使用Python 2.7。

谢谢!

2 个回答

5

看看NumPy的fromfile函数。你只需要简单地告诉它你想读取的数据类型,这个函数就能高效地把数据读进一个NumPy的ndarray对象里。

import numpy as np
np.fromfile(file_name, dtype='<i4')

你还可以改变dtype来调整数据的大小和字节顺序。这里有一些例子可以参考。

14

你可以使用 struct.unpack() 这个方法:

with open(filename, 'rb') as fileobj:
    for chunk in iter(lambda: fileobj.read(4), ''):
        integer_value = struct.unpack('<I', chunk)[0]

这里用 <I 来把字节解释为小端格式的无符号整数。你可以根据需要调整格式;用 > 表示大端格式,用 i 表示有符号整数。

如果你需要一次性读取很多整数值,并且知道需要读取多少个,可以看看 array 模块

from array import array

arr = array('L')
with open(filename, 'rb') as fileobj:
    arr.fromfile(fileobj, number_of_integers_to_read)

如果文件的字节顺序和你系统的字节顺序不一致,你就需要使用 array.byteswap() 方法:

if sys.byteorder != 'little':
    arr.byteswap()

撰写回答