6

私は PyTables を初めて使用し、Pytables のテーブルからデータを挿入および取得するいくつかの基本的な手法を実装しました。ただし、チュートリアルで読んだり取得したりするのは(メソッドを使用して)新しいテーブルを作成することだけなので、PyTables の既存のテーブルにデータを挿入する方法についてはわかりませんh5file.createTable()。これは、ゼロから作成された PytTables テーブルにデータを挿入することに関するチュートリアルの基本的なコードです。

h5file = openFile("tutorial1.h5", mode = "w", title = "Test file")
group = h5file.createGroup("/", 'detector', 'Detector information')
table = h5file.createTable(group, 'readout', Particle, "Readout example")

for i in xrange(10):
    particle['name']  = 'Particle: %6d' % (i)
    particle['TDCcount'] = i % 256
    particle['ADCcount'] = (i * 256) % (1 << 16)
    particle['grid_i'] = i
    particle['grid_j'] = 10 - i
    particle['pressure'] = float(i*i)
    particle['energy'] = float(particle['pressure'] ** 4)
    particle['idnumber'] = i * (2 ** 34)
    # Insert a new particle record
    particle.append()

    table.flush()

PSこのチュートリアルには、既存のテーブルへのデータの追加について説明している場所が1つありますが、最初から作成されたテーブルを使用しており、データを追加するために既存のテーブルを選択することについては基本的にわかりません。親切に助けてください。ありがとう。

4

1 に答える 1

13

追加モードでファイルを開く必要があります"a"。また、グループとテーブルを再度作成しないでください。これにより、さらに 10 行が追加されます。

import tables


class Particle(tables.IsDescription):
    name      = tables.StringCol(16)   # 16-character String
    idnumber  = tables.Int64Col()      # Signed 64-bit integer
    ADCcount  = tables.UInt16Col()     # Unsigned short integer
    TDCcount  = tables.UInt8Col()      # unsigned byte
    grid_i    = tables.Int32Col()      # 32-bit integer
    grid_j    = tables.Int32Col()      # 32-bit integer
    pressure  = tables.Float32Col()    # float  (single-precision)
    energy    = tables.Float64Col()    # double (double-precision)

h5file = tables.openFile("tutorial1.h5", mode = "a")
table = h5file.root.detector.readout

particle = table.row

for i in range(10, 20):
    particle['name']  = 'Particle: %6d' % (i)
    particle['TDCcount'] = i % 256
    particle['ADCcount'] = (i * 256) % (1 << 16)
    particle['grid_i'] = i
    particle['grid_j'] = 10 - i
    particle['pressure'] = float(i*i)
    particle['energy'] = float(particle['pressure'] ** 4)
    particle['idnumber'] = i * (2 ** 34)
    # Insert a new particle record
    particle.append()

h5file.close()
于 2013-05-30T08:37:00.710 に答える