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

时间:2014-03-06 15:44:25

标签: python python-2.7

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

任何人都可以提供代码片段来展示如何提取每个4字节整数,直到文件结束?使用Python 2.7。

由于

2 个答案:

答案 0 :(得分:11)

您可以使用struct.unpack()

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

这使用<I将字节解释为little-endian无符号整数。根据需要调整格式; { - 1}}表示big-endian,>表示签名整数。

如果您需要一次性读取大量整数值并知道需要阅读的数量,请同时查看array module

i

如果文件的结尾与您的系统不匹配,则需要使用array.byteswap()

from array import array

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

答案 1 :(得分:4)

查看NumPy fromfile function。您提供了有关要读取的数据的简单类型注释,并且该函数有效地将其读入NumPy ndarray对象。

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

您也可以更改dtype以反映大小和字节顺序。 See here for some examples.

相关问题