python - array.array 在文件中的存储大小

标签 python file-io

我正在使用 array.array 以二进制格式将许多固定大小的数字记录存储到一个大文件中,我想通过编写例如 以 block 的形式并行处理该文件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:

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

清楚了吗?

关于python - array.array 在文件中的存储大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19777586/

相关文章:

c++ - ifstream.read() 与 MSVC++7.1 中的 ifstream.readsome()

javascript - 在 HTML 文件中使用 Javascript 逐行读取文本文件并存储在变量中

c# - 为什么写入 MemoryStream 比写入文件慢?

python - 如何从最后一个位置重复读取文件

python - 如何使用 Python 查询作为 Mongodb 中列表字段的列表中命中元素的计数?

Python 装饰器 staticmethod 对象不可调用

python - 如何使用 setup.py 安装托管在私有(private) PyPI 中的包?

Python - 准确的时间.sleep

python - Tkinter 与 openweather

java - 如何加快从大量文件中读取的速度(Java)