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
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]}")
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])
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)