我正在使用array.array
以二进制格式将许多固定大小的数字记录存储到一个大文件中,我想通过编写例如array.array('l', range(20)).tofile(fout)
来以块的形式并行处理。如何计算与seek
一起使用的偏移量,以确保我在记录边界处进行分块?
答案 0 :(得分:2)
我们来一个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
因此该文件具有预期的字节数。读取“index”处的值,比如7:
>>> f = open('array.dat', 'rb')
>>> f.seek(7 * a.itemsize)
>>> raw = f.read(a.itemsize)
>>> import struct
>>> struct.unpack(a.typecode, raw)
(7,)
清除?