Serialization with h5py
- HDF5 - Hierarchical Data Format - supports n-dimensional datasets and each element in the dataset may itself be a complex object.
- docs
TODO: fix these
examples/serialization/h5py_counter.py
import h5py import os import sys import numpy as np filename = 'counter.h5' if len(sys.argv) == 1: if not os.path.exists(filename): print("counter does not exist yet") exit(1) with h5py.File(filename, 'r') as hdf: for name in hdf.keys(): print(f"{name}: {hdf[name][0]}") exit() if not os.path.exists(filename): with h5py.File(filename, 'w') as hdf: pass with h5py.File(filename, 'r+') as hdf: for name in sys.argv[1:]: if name not in hdf: hdf[name] = np.zeros(1, dtype=int) hdf[name][0] += 1 print(f"{name}: {hdf[name][0]}")
examples/serialization/h5py_example.py
import h5py #import numpy as np # #original_data = [] # #count = 10 #size = (2, 5) filename = 'data.h5' # #for _ in range(count): # row = np.random.random(size) # print(row) # original_data.append(row) with h5py.File(filename, 'w') as hdf: hdf["a"] = 23 hdf["b"] = 19 with h5py.File(filename, 'r') as hdf: print(hdf) # <HDF5 file "data.h5" (mode r)> print(hdf.keys()) # <KeysViewHDF5 ['a', 'b']> for key in hdf.keys(): print(key, hdf[key])
examples/serialization/check_hdf5.py
import sys import h5py filename = sys.argv[1] with h5py.File(filename, 'r') as hdf: loaded = hdf['data'][:] print(len(loaded)) print(type(loaded)) print(loaded.size) print(loaded.shape) print(type(loaded[0])) print(loaded[0].size) print(loaded[0].shape)