在Python中从二进制文件读取4字节整数
我有一些二进制文件(有些可能很大,达到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()