繁体   English   中英

Python:读取压缩的(.gz)HDF文件,而无需写入和保存未压缩的文件

[英]Python: Read compressed (.gz) HDF file without writing and saving uncompressed file

我有大量压缩的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')

并对每个文件重复此操作。 但是,这比我想要的更耗时。

我认为大多数情况下可能是由于将压缩文件写入新的未压缩版本而引起的,并且如果我能够将一个文件的未压缩版本读入SD函数中,则可以加快速度。步。

我的想法正确吗? 如果是这样,是否有办法做我想做的事?

根据pyhdf 软件包文档 ,这是不可能的。

__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)

sascha是正确的,因为hdf透明压缩比gzip压缩更合适,但是,如果您无法控制hdf文件的存储方式,则您正在寻找gzip python模块(文档),它可以从这些文件中获取数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM