【问题标题】:How to search pattern in big binary files efficiently如何有效地在大二进制文件中搜索模式
【发布时间】:2019-12-12 14:51:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: python algorithm search binaryfiles


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 2013-03-17
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多