【发布时间】:2017-08-29 05:07:16
【问题描述】:
我有大量压缩的 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')
并为每个文件重复此操作。但是,这比我想要的更耗时。
我认为大部分时间可能是由于将压缩文件写入新的未压缩版本而导致的,如果我能够将文件的未压缩版本读入 @ 987654323@功能一步到位。
我的这种想法正确吗?如果是这样,有没有办法做我想做的事?
【问题讨论】:
-
这很尴尬。正确的用法是 hdf 中的透明压缩(因此您在写入和阅读期间不必关心)!您描述的此设置仅可用于存档(因为压缩是 hdf 不知道的额外层)。您没有指定您的用例,但在某些情况下(您想从中读取许多迭代):将每个转换为一个新的 hdf 并启用压缩(或者如果内存没有问题,则只需解压缩)! 备注 python 还支持许多解压工具,无需基于文件的管道。
-
人们真的必须查看
pyhdf的详细信息才能在这里得到一个很好的答案——可以在 Python 中获得一个与 gzipped 流相对应的类文件对象,但需要知道如果一个类似文件的对象足够好,或者 pyhdf 库需要一个真实的文件(或者更糟糕的是,一个文件名,以便它可以打开文件本身)。 -
(即使它确实需要一个文件名,也可以使用 FIFO 玩技巧 if pyhdf 不需要它的输入文件是可搜索的,但同样,这有点必须对图书馆实施的细节进行调查)。
标签: python compression gzip hdf