簡體   English   中英

使用np.fromfile的文件大小的最大限制?

[英]Max limit for file size with np.fromfile?

如果np.fromfile()有最大文件大小? 我正在嘗試讀取一個48GB的文件,大約有2.1e9條記錄(每條記錄有5個值)。

當我將計數限制為8e7時,它可以工作:

fromfile(filename, dtp, int(8e7))
Out[69]: 
array([(1, 244025.0, 1.1666666269302368, 360.1666564941406, 50.0),
       (2, 244025.0, 1.1666666269302368, 360.5, 50.0),
       (3, 244025.0, 1.1666666269302368, 360.8333435058594, 50.0), ...,
       (255138, 244131.0, 1128.9346923828125, 461.38494873046875, 49.5),
       (255139, 244131.0, 1143.77783203125, 473.2532958984375, 49.5),
       (255140, 244131.0, 1150.4803466796875, 464.6799011230469, 49.5)], 
      dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')]) 

但是當計數設置為9e7時,所有值都讀為零:

In [70]: fromfile(filename, dtp, int(9e7))
Out[70]: 
array([(0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0),
       (0, 0.0, 0.0, 0.0, 0.0), ..., (0, 0.0, 0.0, 0.0, 0.0),
       (0, 0.0, 0.0, 0.0, 0.0), (0, 0.0, 0.0, 0.0, 0.0)], 
      dtype=[('ntrac', '<i4'), ('ints', '<f8'), ('x', '<f4'), ('y', '<f4'), ('z', '<f4')])

這可能是Mac OSX的fread()例程中的一個錯誤。 fwrite()例程確實有類似的錯誤: https//github.com/numpy/numpy/issues/574

您可以通過編寫一個簡單的C測試程序(例如附在票證上的那個)來檢查這一點,然后向Apple投訴......

解決方法是以足夠小的塊讀取文件。

編輯:太快讀取錯誤報告--- fwrite()錯誤不完全相似,但我認為不能排除操作系統錯誤...

它看起來確實是Mac OS X的一個錯誤。

請參閱numpy中的以下錯誤: https//github.com/numpy/numpy/issues/2806

我在分支的分支中有一個建議的修復程序,有助於某人驗證它,請參閱: https//github.com/sauliusl/numpy/tree/bug_large_save

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM