gpt4 book ai didi

python - 从物理驱动器中提取字符串

转载 作者:太空宇宙 更新时间:2023-11-03 19:10:18 25 4
gpt4 key购买 nike

我希望用 Python 2.x 编写一个脚本,该脚本将扫描物理驱动器(物理驱动器和非逻辑驱动器)以查找大小不等的特定文本字符串(聊天工件)。我有字符串的页眉和页脚,所以我只是想知道如何最好地扫描驱动器?我担心的是,如果我将其分割成 250MB 的 block ,并在解析页眉和页脚之前将这些数据读入 RAM,则可能页眉在那里,但页脚位于下一个 250MB 的 block 中。

所以本质上,我想扫描PhysicalDevice0以查找以“ABC”开头并以“XYZ”结尾的字符串,并从其中复制所有内容。我不确定是否也将数据扫描为 ascii 或 Hex。

随着驱动器变得越来越大,我希望以尽可能最快的方式做到这一点。

有什么建议吗?

最佳答案

您的问题可以表述为“如何在没有行结构的非常长的文件中进行搜索”。这与一次一行读取面向行的文本时所做的事情没有什么不同:想象一下,您正在逐 block 读取一个文本文件,但有一个面向行的正则表达式可供搜索;您将搜索到已阅读的 block 中的最后一个完整行,然后保留最后一个不完整的行并读取另一个 block 以扩展它。因此,您不必在读取每个新 block 时重新开始。将其视为滑动窗口;您只需将其推进即可丢弃您能够完全搜索到的部分。

在这里执行相同的操作:编写代码,以便您匹配的字符串永远不会到达缓冲区的边缘。例如,如果您要搜索的 header 长度为 100 字节:读取文本 block ;检查 block 中是否出现完整模式;将阅读窗口提前到当前 block 末尾之前的 100 个字节,并在其后添加一个新 block 的文本。现在您可以搜索 header ,而不必担心丢失 header 。找到它后,您将提取文本,直到看到停止模式(页脚)。它是在同一个 block 中还是在五个 block 之后并不重要:您的代码应该知道它处于提取模式,直到看到停止模式。

关于python - 从物理驱动器中提取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13212673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com