繁体   English   中英

如何有效地在大二进制文件中搜索模式

[英]How to search pattern in big binary files efficiently

我有几个二进制文件,它们大多大于10GB 在这个文件中,我想用Python找到模式,即模式0x01 0x02 0x030xF1 0xF2 0xF3之间的数据。

我的问题:我知道如何处理二进制数据或如何使用搜索算法,但是由于文件的大小,首先完全读取文件的效率非常低。 这就是为什么我认为按块读取文件并在块内搜索模式是明智的。

我的目标:我想让Python确定找到的模式的位置(开始和停止)。 有没有一种特殊的算法或者甚至一个Python library可以用来解决这个问题?

在大文件中搜索模式时,常用的方法是将文件按块读取到一个缓冲区中,该缓冲区的大小为读取缓冲区的大小 + 模式的大小 - 1。

在第一次读取时,您只在读取缓冲区中搜索模式,然后从缓冲区的末尾重复将 size_of_pattern-1 个字符复制到开头,然后读取一个新块并在整个缓冲区中搜索。 这样,您一定会找到模式的任何出现,即使它从一个块开始并在下一个块中结束。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM