大量の圧縮HDFファイルがあります。Python:圧縮されていないファイル(.gz)を読み書きせずに読み込みます。
file1.HDF.gz
file2.HDF.gz
file3.HDF.gz
...
私は、次のような方法
from pyhdf.SD import SD, SDC
import os
os.system('gunzip <file1.HDF.gz> file1.HDF')
HDF = SD('file1.HDF')
で圧縮されていないHDFファイルを読み込むと、ファイルごとにこれを繰り返すことができます。しかし、これは私が望むよりも時間がかかります。
私は、ほとんどの時間オーバーハングが圧縮されたファイルを新しい非圧縮バージョンに書き込むことから来ていると考えています。そして、ファイルの非圧縮バージョンをSD
は1ステップで機能します。
私はこの考え方で正しいですか?もしそうなら、私がしたいことをする方法がありますか?
厄介です。正しい使い方は、hdf内の透過的な圧縮です(したがって、書き込みと読み取りの間に気にする必要はありません)!あなたが説明するこの設定は、アーカイブのみで使用できます(圧縮はextra-layer hdfが知らないためです)。あなたはユースケースを指定しませんでしたが、いくつかのケースでは(これらの中から多くの反復を読みたいと思っています):圧縮を使用してそれぞれを新しいhdfに変換します(またはメモリに問題がなければ復元するだけです)。 **備考** pythonは、ファイルベースのパイプラインなしで多くの圧縮解除ツールもサポートしています。 – sascha
pyhdfの詳細を見てみるとよいでしょう。Pythonでgzip形式のストリームに対応するファイルのようなオブジェクトを取得できますが、ファイルのようなオブジェクトがあるかどうかを知る必要がありますpyhdfライブラリが実際のファイルを必要とする場合(または、ファイル自体を開くことができるようにファイル名が悪い場合) –
(実際にファイル名が必要な場合でも、pyhdfが入力ファイルをシーク可能にする必要がない場合は、* FIFOを使ってトリックを再生することができますが、それはもう少しの調査ですライブラリの実装)。 –