3
我有一個包含數據數組的bz2壓縮二進制(大端)文件。使用外部工具進行解壓縮,然後讀取文件中numpy的工作:將bz2壓縮的二進制文件導入爲numpy數組
import numpy as np
dim = 3
rows = 1000
cols = 2000
mydata = np.fromfile('myfile.bin').reshape(dim,rows,cols)
然而,由於有大量的這樣的其他文件,我不能提取每一個單獨提前。因此,我找到了Python中的bz2模塊,它可以直接在Python中解壓縮它。但是,我收到一條錯誤消息:
dfile = bz2.BZ2File('myfile.bz2').read()
mydata = np.fromfile(dfile).reshape(dim,rows,cols)
>>IOError: first argument must be an open file
顯然,BZ2File函數不返回文件對象。你知道什麼是正確的方式讀取壓縮文件?
frombuffer很棒,謝謝! – HyperCube
'frombuffer()'在python2.7中似乎不起作用。它以'AttributeError失敗:'ExFileObject'對象沒有屬性'__buffer __''。任何想法爲什麼? –
沒關係,我正在使用'zipfl = bz2.BZ2File('myfile.bz2')。open('file_memver_in_archive')'因爲我想獲得'dbuf.name'和成員的其他屬性。但是,如果像我這樣需要''''''''''''''''作爲'ExFileObjcet',就可以簡單地執行'mydata = np.frombuffer(zipfl.read())',並且兩全其美。 –