我有大量压缩的HDF文件,我需要阅读。
file1.HDF.gz
file2.HDF.gz
file3.HDF.gz
...
我可以使用以下方法读取未压缩的HDF文件
from pyhdf.SD import SD, SDC
import os
os.system('gunzip < file1.HDF.gz > file1.HDF')
HDF = SD('file1.HDF')
并为每个文件重复此操作。但是,这比我想要的更耗时。
我认为可能大部分时间都是将压缩文件写入新的未压缩版本,如果我只是能够将文件的未压缩版本读入{ {1}}一步完成功能。
我在这个想法中是否正确?如果是这样,有没有办法做我想做的事?
答案 0 :(得分:4)
根据pyhdf package documentation,这是不可能的。
__init__(self, path, mode=1)
SD constructor. Initialize an SD interface on an HDF file,
creating the file if necessary.
没有其他方法来实例化采用类文件对象的SD对象。这可能是因为它们符合外部接口(NCSA HDF)。 HDF格式通常也处理大量文件,这些文件一次存储在内存中是不切实际的。
将其解压缩为文件可能是您性能最佳的选项。
如果您想留在Python中,请使用gzip模块(docs):
import gzip
import shutil
with gzip.open('file1.HDF.gz', 'wb') as f_in, open('file1.HDF', 'rb') as f_out:
shutil.copyfileobj(f_in, f_out)
答案 1 :(得分:0)
sascha是正确的,hdf透明压缩比gzipping更合适,但是如果你无法控制hdf文件的存储方式,那么你正在寻找gzip
python modulue (docs)它可以获得来自这些文件的数据。