2024-03-28 20:22:59 发布
网友
我正在使用array.array将许多二进制格式的固定大小的数字记录存储到一个大文件中,我希望通过编写例如array.array('l', range(20)).tofile(fout)这样的代码来并行处理这个文件。如何计算与seek一起使用的偏移量,以确保在记录边界处进行分块?你知道吗
array.array
array.array('l', range(20)).tofile(fout)
seek
让我们看一个array对象:
array
>>> import array >>> a = array.array('l', range(20))
每个元素的大小(字节):
>>> a.itemsize 4
写出来:
>>> f = open('array.dat', "wb") >>> a.tofile(f) >>> f.close()
健全性检查:
>>> import os >>> os.stat('array.dat').st_size 80L >>> len(a) * a.itemsize 80
因此文件具有预期的字节数。读取“索引”处的值,例如7:
>>> f = open('array.dat', 'rb') >>> f.seek(7 * a.itemsize) >>> raw = f.read(a.itemsize) >>> import struct >>> struct.unpack(a.typecode, raw) (7,)
明白了吗?你知道吗
让我们看一个
array
对象:每个元素的大小(字节):
写出来:
健全性检查:
因此文件具有预期的字节数。读取“索引”处的值,例如7:
明白了吗?你知道吗
相关问题 更多 >
编程相关推荐