存储大小数组.array在fi中

2024-03-28 20:22:59 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 文件代码格式记录二进制rangeseek数字
1条回答
网友
1楼 · 发布于 2024-03-28 20:22:59

让我们看一个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,)

明白了吗?你知道吗

相关问题 更多 >