2013-05-20 9 views
5

Mój kod Pythona otrzymuje tablicę bajtów, która reprezentuje bajty pliku hdf5.Czy można załadować plik z tablicy bajtów w pamięci?

Chciałbym przeczytać tablicę bajtów dla obiektu pliku h5py w pamięci bez uprzedniego zapisania tablicy bajtów na dysk. This page mówi, że mogę otworzyć plik zmapowany w pamięci, ale będzie to nowy, pusty plik. Chcę przejść z tablicy bajtów do pliku hdf5 w pamięci, użyć go, odrzucić i nie zapisywać na dysku w żadnym momencie.

Czy można to zrobić za pomocą h5py? (Lub z hdf5 wykorzystaniem C, jeśli jest to jedyny sposób)

+1

Próbuję zrobić to samo. Czy mógłbyś pokazać kod z rozwiązaniem, które działało? dzięki! – konus

+0

Znalazłem rozwiązanie i opublikowałem je tutaj: https://stackoverflow.com/questions/11588630/pass-hdf5-file-to-h5py-as-binary-blob-string/45900556#45900556 – SCGH

Odpowiedz

-3

Można spróbować użyć Binary I/O utworzyć obiekt pliku i odczytać go poprzez h5py:

f = io.BytesIO(YOUR_H5PY_STREAM) 
h = h5py.File(f,'r') 
+0

Dzięki, to wygląda jak Potrzebuję – mahonya

+0

To rozwiązanie nie działa. Zobacz komentarz poniżej. –

+0

Czy możesz udostępnić swój kod, w którym działa to rozwiązanie? –

1

Chciałbym również bardzo lubię, aby móc utwórz obiekt h5py.File z danych w pamięci, tak jak istniejący obiekt pliku Pythona, ale nie widzę żadnego wskazania, że ​​h5py.File akceptuje obiekt pliku jako swój argument.

>>> f = io.BytesIO(open('test.h5').read()) 
>>> h5py.File(f, 'r') 
AttributeError: '_io.BytesIO' object has no attribute 'encode' 

h5py.File (open ('test.h5'), 'r') daje podobny błąd. Nie widzę też sposobu na otwarcie nowego pliku hdf5 mapowanego w pamięci i "zrzutu" strumienia bajtów do niego.

+0

Czy znalazłeś jakieś rozwiązanie? – konus

+1

Nie znaleziono rozwiązania. Próbowałem załadować pliki hd5 z archiwum tar.gz bez dodatkowych operacji we/wy dysku, ale skończyło się pisaniem pliku tymczasowego. Być może uda ci się zhakować wokół tego przy użyciu unixowego pliku FIFO i wątków/fork, ale nie próbowałem tego. – lindyblackburn

Powiązane problemy