Python 文件中array.array的存储大小

Python 文件中array.array的存储大小,python,file-io,Python,File Io,我正在使用array.array将许多二进制格式的固定大小数字记录存储到一个大文件中,我希望通过编写例如array.array('l',range(20)).tofile(fout)来并行处理这个文件。如何计算要与seek一起使用的偏移量,以确保在记录边界处进行分块 让我们看一个数组对象: >>> import array >>> a = array.array('l', range(20)) 每个元素的大小,以字节为单位: >>> a.i

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

让我们看一个
数组
对象:

>>> 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:


透明?

水晶。我最终基本上是这样做的:为什么要使用struct而不是array.fromfile?
fromfile()
很好!但是我想你已经知道了,因为你已经找到了
tofile()
struct
增加了你的技巧:-)例如,
struct
可以用于从文件中的任何位置提取任意长度的片段,而无需读取整个文件。
>>> f = open('array.dat', 'rb')
>>> f.seek(7 * a.itemsize)
>>> raw = f.read(a.itemsize)
>>> import struct
>>> struct.unpack(a.typecode, raw)
(7,)