1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
import tables as tb
class Particle(tb.IsDescription):
name = tb.StringCol(16, pos=1) # 16-character String
lati = tb.Int32Col(pos=2) # integer
longi = tb.Int32Col(pos=3) # integer
pressure = tb.Float32Col(pos=4) # float (single-precision)
temperature = tb.Float64Col(pos=5) # double (double-precision)
# Open a file in "w"rite mode
fileh = tb.open_file("table1.h5", mode="w")
# Create a new group
group = fileh.create_group(fileh.root, "newgroup")
# Create a new table in newgroup group
table = fileh.create_table(group, "table", Particle, "A table", tb.Filters(1))
particle = table.row
# Fill the table with 10 particles
for i in range(10):
# First, assign the values to the Particle record
particle["name"] = "Particle: %6d" % (i)
particle["lati"] = i
particle["longi"] = 10 - i
particle["pressure"] = float(i * i)
particle["temperature"] = float(i**2)
# This injects the row values.
particle.append()
# We need to flush the buffers in table in order to get an
# accurate number of records on it.
table.flush()
# Add a couple of user attrs
table.attrs.user_attr1 = 1.023
table.attrs.user_attr2 = "This is the second user attr"
# Append several rows in only one call
table.append(
[
("Particle: 10", 10, 0, 10 * 10, 10**2),
("Particle: 11", 11, -1, 11 * 11, 11**2),
("Particle: 12", 12, -2, 12 * 12, 12**2),
]
)
group = fileh.root.newgroup
print("Nodes under group", group, ":")
for node in fileh.list_nodes(group):
print(node)
print()
print("Leaves everywhere in file", fileh.filename, ":")
for leaf in fileh.walk_nodes(classname="Leaf"):
print(leaf)
print()
table = fileh.root.newgroup.table
print("Object:", table)
print(f"Table name: {table.name}. Table title: {table.title}")
print("Rows saved on table: %d" % (table.nrows))
print("Variable names on table with their type:")
for name in table.colnames:
print(" ", name, ":=", table.coldtypes[name])
print("Table contents:")
for row in table:
print(row[:])
print("Associated recarray:")
print(table.read())
# Finally, close the file
fileh.close()
|