Python 核心外自定义二进制文件处理
目前的问题是一批大型(500GB-1TB)二进制文件,表示连续的时间序列数据,每个文件都有页眉和页脚。我见过很多解决方案,比如Python 核心外自定义二进制文件处理,python,python-3.x,io,binaryfiles,binary-data,Python,Python 3.x,Io,Binaryfiles,Binary Data,目前的问题是一批大型(500GB-1TB)二进制文件,表示连续的时间序列数据,每个文件都有页眉和页脚。我见过很多解决方案,比如Dask,或者Python核心mmap,或者NumPymemmap,等等,但是它们似乎都没有处理页脚包含问题。至少我没有注意到,可能有一些琐碎的东西,比如“文件大小掩码”,允许我“重影”每个文件的最后N字节 我在文件交互方面的限制仅限于只读访问,我在本地都有这些限制 我现在写的是一个io.open(filename,'rb',buffering=0),它迭代文件列表,每次
Dask
,或者Python核心mmap
,或者NumPymemmap
,等等,但是它们似乎都没有处理页脚包含问题。至少我没有注意到,可能有一些琐碎的东西,比如“文件大小掩码”,允许我“重影”每个文件的最后N
字节
我在文件交互方面的限制仅限于只读
访问,我在本地都有这些限制
我现在写的是一个io.open(filename,'rb',buffering=0)
,它迭代文件列表,每次读取后手动移动指针,并跟踪指针相对于文件的位置。当它到达下一次读取将进入页脚的点时,例如进入下一个文件,有一个非常难看的位将块分成两个更小的、通常不对称的块,第一个块被读取,然后发生文件切换,然后读取下一个块
我觉得我正在用它来改造自行车,我非常感谢任何头脑风暴级别的建议。一旦我知道了我应该走的方向,我会很乐意自己设计技术细节。你考虑过使用吗?e、 将二进制数据(在一次顺序读取过程中)转换为精心设计的SQLite数据库。。。或者在原始二进制文件中构建一个包含偏移量的SQLite数据库。不是真的,不是。我主要关心的是改进读取过程本身,因为我可以直接、算法地生成偏移量列表——我现在已经这样做了。我目前的解决方案是可行的,与一般解决方案相比,amd可能表现不佳,而不是最先进的解决方案。原始数据本身只需要直到第一次计算通过,其结果减少了选择大小的数量级。您考虑使用吗?e、 将二进制数据(在一次顺序读取过程中)转换为精心设计的SQLite数据库。。。或者在原始二进制文件中构建一个包含偏移量的SQLite数据库。不是真的,不是。我主要关心的是改进读取过程本身,因为我可以直接、算法地生成偏移量列表——我现在已经这样做了。我目前的解决方案是可行的,与一般解决方案相比,amd可能表现不佳,而不是最先进的解决方案。原始数据本身只需要在第一次计算通过之前使用,计算结果会将选择大小减少几个数量级。