反向迭代pytable与itersorted和负步骤产生OverflowError

时间:2013-05-06 21:06:19

标签: python pytables

我正在尝试根据列对pytable进行排序,然后使用负步骤反向迭代。根据文档可以这样做:

http://pytables.github.io/usersguide/libref.html?highlight=itersorted#tables.Table.itersorted

但是,当我使用step = -1时,我收到以下错误:

OverflowError:无法将负值转换为无符号PY_LONG_LONG

如果步骤为正,则不会发生错误。 我用pytables 2.4和3.0.0b1尝试了这个,两者都有同样的问题。

知道为什么会这样吗?这是一个错误吗?我还需要做点什么吗?

我附上了一个最低限度的工作示例:

import tables

class IndexRecord(tables.IsDescription):
    frame = tables.Int32Col(pos=1)
    key = tables.StringCol(itemsize=40, pos=2)     

h5 = tables.openFile("trace.h5", 'w')
index = h5.createTable(h5.root, "index", IndexRecord)


index.append([(0, 'A')])
index.append([(1, 'B')])
index.append([(3, 'C')])
index.append([(4, 'D')])
index.flush()

index.cols._f_col('frame').createCSIndex()
for row in index.itersorted('frame', step=-1):   #<-crashes here!
    print row['frame'], row['key']

1 个答案:

答案 0 :(得分:0)

这是一个错误。我现在正在报道。

编辑:[1]现在有一个解决这个问题的方法。希望它能够进入3.0版本。将来请在[2]或pytables-users@lists.sourceforge.net报告错误谢谢!

  1. https://github.com/PyTables/PyTables/pull/253
  2. https://github.com/PyTables/PyTables/issues