2

array.array用来将许多固定大小的数字记录以二进制格式存储到一个大文件中,我想通过编写例如array.array('l', range(20)).tofile(fout). 如何计算要使用的偏移量以seek确保我在记录边界处分块?

4

1 回答 1

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

因此该文件具有预期的字节数。读取“索引”处的值,例如 7:

>>> f = open('array.dat', 'rb')
>>> f.seek(7 * a.itemsize)
>>> raw = f.read(a.itemsize)
>>> import struct
>>> struct.unpack(a.typecode, raw)
(7,)

清除?

于 2013-11-04T22:18:05.427 回答