Overview:
- Attributes in HDF5 allow datasets to be self-descriptive.
- Any metadata that describe the datasets and groups can be attached to groups and datasets of HDF5 through attributes.
- In h5py, both the Group and Dataset objects have the python attribute attrs through which attributes can be stored.
- The attrs is an instance of AttributeManager. AttributeManager provides dictionary like access for reading and writing attributes.
Example:
# Example Python program that adds attributes to a HDF5 group and a HDF5 dataset import h5py import numpy.random
# Create a HDF5 file fileOpenMode = "w"; hdfFileName = "WithAttributes.HDF5"; hdf5File = h5py.File(hdfFileName, fileOpenMode);
# Create a group at root level aGroup = hdf5File.create_group("/A");
datasetShape = (24,); aDataset = aGroup.create_dataset("/A/D", datasetShape);
# Add aDataset.attrs["SensorName"] = "FluidVelocity-X1Y5"; aDataset.attrs["SensorType"] = "Differential"; aDataset.attrs["SensorLocation"] = "40.71, -74.00";
# Assign hourly readings for i in range(0, 24): aDataset[i] = numpy.random.uniform(80, 100, 1)[0];
# Print dataset along with attributes print("(Attribute, Value:)"); for item in aDataset.attrs.items(): print(item);
for i in range(0, aDataset.shape[0]): print(aDataset[i]); |
Output:
(Attribute, Value:) ('SensorLocation', '40.71, -74.00') ('SensorName', 'FluidVelocity-X1Y5') ('SensorType', 'Differential') 86.06291 89.932724 97.62169 91.05482 85.80139 90.10574 95.83731 86.68407 94.6496 92.08971 81.00686 86.006996 97.08245 84.83142 82.231895 99.718704 90.461914 86.364334 81.27478 93.38981 91.627525 89.78677 84.98252 85.19031 |