我有一个二进制文件,它包含4个字节的二进制值,每个值代表一组两个short int
。我知道我可以将一个4字节的二进制值解压为两个短整数,如下所示:
from struct import unpack
fval = b'\xba\x1e\x99\x01' #actualy read from some file
qualdip, azi = unpack('hh', fval)
print(type(qualdip), qualdip)
print(type(azi), azi)
>>> <class 'int'> 7866
>>> <class 'int'> 409
现在,我要打开整个缓冲区。目前我正在做的是:
^{pr2}$对于一个277MB的文件来说,这需要一分钟的时间,并且似乎会产生巨大的内存开销。在
我想将整个filebuffer直接解压到两个变量中。我该怎么做?在
我怀疑^{
with open(bfile, 'rb') as buf:
qualdip, azi = unpack_from('hh', buf)
只提取两个值,和(我知道文件的元素数)
with open(bfile, 'rb') as buf:
qualdip, azi = unpack_from('72457091h72457091h', buf)
期望有如此多的输出变量。所以:
如何将整个filebuffer直接解压到两个变量中?在
我不知道如何将值直接解压到两个列表中,但您可以将整个文件解压为一个元组,然后将其分成两部分:
或者,使用^{} 创建一个iterator,这将减少内存消耗。在
^{pr2}$我认为这可能是一种更快的方法:
相关问题 更多 >
编程相关推荐