如何将压缩二进制文件作为浮点数组读取

时间:2016-06-27 22:43:51

标签: python arrays binary

我需要以浮点数组的形式读取压缩的无格式二进制文件。我发现这样做的唯一方法是使用os解压缩,使用np.fromfile读取它,然后再将其压缩。

os.system('gunzip filename.gz')
array = np.fromfile('filename','f4')
os.system('gzip filename')

然而,这是不可接受的。除了凌乱之外,我还需要在没有写入权限的情况下读取文件。据我所知,np.fromfile无法直接读取压缩文件。我发现人们建议我使用它:

f=gzip.GzipFile('filename')
file_content = f.read()

但这会返回如下内容:'\ x00 \ x80 \ xe69 \ x00 \ x80 \ xd19 \ x00 \ x80' 而不是浮点数组。有谁知道如何将此输出转换为浮点数组,或者有更好的方法来执行此操作?

1 个答案:

答案 0 :(得分:4)

在您阅读完文件内容后,您应该能够使用numpy.fromstring获取数组:

import gzip
import numpy as np

f=gzip.GzipFile('filename')
file_content = f.read()
array = np.fromstring(file_content, dtype='f4')