Ich habe eine große Anzahl von komprimierten HDF-Dateien, die ich lesen muss.Python: Lesen Sie komprimierte (.gz) HDF-Datei ohne zu schreiben und unkomprimierte Datei zu speichern
file1.HDF.gz
file2.HDF.gz
file3.HDF.gz
...
ich in unkomprimierter HDF-Dateien mit dem folgenden Verfahren
from pyhdf.SD import SD, SDC
import os
os.system('gunzip <file1.HDF.gz> file1.HDF')
HDF = SD('file1.HDF')
und wiederholen Sie dies für jede Datei lesen kann. Dies ist jedoch zeitaufwendiger als ich es möchte.
Ich denke, es ist möglich, dass die meiste Zeit Überhang aus dem Schreiben der komprimierten Datei in eine neue unkomprimierte Version kommt, und dass ich es beschleunigen könnte, wenn ich einfach in der Lage wäre, eine unkomprimierte Version der Datei zu lesen SD
Funktion in einem Schritt.
Bin ich in diesem Denken richtig? Und wenn ja, gibt es eine Möglichkeit zu tun, was ich will?
Das umständlich ist. Die korrekte Verwendung wäre die transparente Komprimierung innerhalb von hdf (Sie müssen also beim Schreiben und Lesen nicht darauf achten)! Diese Konfiguration, die Sie beschreiben, ist nur für die Archivierung geeignet (da Komprimierung eine zusätzliche Ebene ist, von der hdf nichts weiß). Sie haben Ihren Anwendungsfall nicht angegeben, aber in einigen Fällen (Sie möchten viele Iterationen daraus lesen): Transformieren Sie jedes mit Komprimierung in ein neues hdf (oder dekomprimieren Sie einfach, wenn der Speicher kein Problem darstellt)! ** Bemerkung ** Python unterstützt auch viele Dekomprimierungswerkzeuge ohne Ihre dateibasierte Pipeline. – sascha
Man müsste sich wirklich die Details von 'pyhdf' ansehen, um hier eine gute Antwort zu haben - man kann ein dateiähnliches Objekt erhalten, das einem gezippten Stream in Python entspricht, aber wissen müsste, ob ein dateiähnliches Objekt ist Gut genug oder wenn die pyhdf-Bibliothek eine echte Datei benötigt (oder, schlimmer noch, einen Dateinamen, damit sie die Datei selbst öffnen kann). –
(selbst wenn es wirklich einen Dateinamen wünscht, könnte man Tricks mit FIFOs * spielen, wenn * pyhdf nicht benötigt, dass seine Eingabedateien suchbar sind, aber wiederum, das ist ein bisschen Untersuchung, die man in die Details davon machen müsste Implementierung der Bibliothek). –