逐字节读取和处理大型易失性内存文件

Reading and processing large volatile memory file byte by byte

我目前正在使用 python 处理由 belkasoft、ftk imager 等应用程序创建的内存转储,它们的扩展名通常为 .mem 或 .dmp,格式如下:

53 FF 00 F0 53 FF 00 

我想可视化这些数据比方说使用热图或使用曲线可能会尝试可视化每个字节。如果是 2GB 文件,则为 2147483648 字节。 您将如何读取和处理这种 >= 2GB

的大文件

我一直在尝试类似的东西:

with open("File.mem",'rb') as file:
    byte = file.read(1)
    while byte:
         Do something

并设法做了一些计算,但速度慢得令人痛苦 我还尝试逐行读取文件,速度很快,但再次读取每行的字节并进行一些转换也非常慢。 我也读过一些关于 numpy loadtxt 的文章,但并没有尝试太多,我想我会先在这里问一下。

有什么想法可以适合这种情况并提高效率吗?

非常感谢

读取大文件的常用方法是使用mmap。文件内容映射到您的进程内存 space,您可以通过从 RAM 读取数据来访问它。 OS 负责将需要的数据加载到 RAM 中。这与交换文件的工作方式类似。 OS 知道数据在文件中,并在您访问它时动态加载它。 OS 如果它需要内存用于其他目的,也可以从 RAM 中卸载数据,因为它总是可以从文件中再次加载它。

看看 mmap python 模块。