2016-11-18 31 views
0

我目前使用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,但沒有試驗太多,以爲我會先問這裏。

任何想法可能適合這種情況,並使其更有效?

非常感謝

回答

0

通常讀取大文件的方法是使用mmap。文件內容映射到您的進程內存空間,您可以通過從RAM讀取數據來訪問它。 OS需要注意將所需的數據加載到RAM中。這與交換文件的工作方式類似。 OS知道數據在文件中並在訪問時動態加載它。如果需要內存用於其他目的,OS也可以從RAM中卸載數據,因爲它可以始終從文件再次加載它。

看看mmap python模塊。

+0

非常感謝,我已經嘗試過,它非常快,非常感謝。 –