我有3000个已知格式的二进制文件(每个大小为40 [MB])(每个都有5,000,000''记录''int32,float32')。它们是使用numpy
tofile()方法创建的。
我使用的方法WhichShouldBeUpdated()
确定应更新哪个文件(3000个中),以及应更改此文件中的哪些记录。方法的输出如下:
(1)path_to_file_name_to_update
(2)包含N
条记录的numpy记录数组(N
是要更新的记录数),格式如下:[(recordID1, newIntValue1, newFloatValue1), (recordID2, newIntValue2, newFloatValue2), .....]
可以看出:
(1)要更新的文件仅在运行时知道
(2)要更新的记录也只在运行时知道
使用记录的新值更新文件的最有效方法是什么?
答案 0 :(得分:7)
由于记录具有固定长度,您只需打开文件并seek
到位置,这是记录大小和记录偏移的倍数。要将整数和浮点数编码为二进制,可以使用struct.pack
。 更新:鉴于文件最初是由numpy生成的,最快的方式可能是numpy.memmap
。
答案 1 :(得分:1)