逐字节读取和处理大型易失性内存文件
Posted
技术标签:
【中文标题】逐字节读取和处理大型易失性内存文件【英文标题】:Reading and processing large volatile memory file byte by byte 【发布时间】:2017-04-02 00:17:30 【问题描述】:我目前正在使用 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 的文章,但没有做太多实验,我想先在这里问。
有什么想法可能适合这种情况并提高效率吗?
非常感谢
【问题讨论】:
【参考方案1】:读取大文件的常用方法是使用 mmap。文件内容映射到您的进程内存空间,您可以通过从 RAM 读取数据来访问它。操作系统负责将所需数据加载到 RAM 中。这类似于交换文件的工作方式。操作系统知道数据在文件中,并在您访问它时动态加载它。如果操作系统需要内存用于其他目的,它也可以从 RAM 中卸载数据,因为它总是可以从文件中再次加载它。
看看mmappython模块。
【讨论】:
非常感谢,我已经尝试过了,它非常快,非常感谢。以上是关于逐字节读取和处理大型易失性内存文件的主要内容,如果未能解决你的问题,请参考以下文章