A Tuesday 19 February 2008, Kevin Christman escrigué:
> I am having problems removing rows. Since removeRows() doesn't
> accept a list of indices to be removed (it only accepts a single
> value or a range), I tried to remove the rows one by one, where
> DryExp is my table:
>
> listofBadNums = ['NJ451','AJ322','B321'] #actually this is just a
> short test list for row in DryExp:
> if row['CatalogNum'] in listofBadNums:
> DryExp.removeRows(row.nrow)
> DryExp.flush()
>
> I also tried moving DryExp.flush() inside the loop, but in either
> case I got the following error message:
>
> Traceback (most recent call last):
> File "D:\tablem.py", line 46, in <module>
> for row in DryExp:
> File "tableExtension.pyx", line 801, in tableExtension.Row.__next__
> File "tableExtension.pyx", line 951, in
> tableExtension.Row.__next__general File "tableExtension.pyx", line
> 548, in tableExtension.Table._read_records HDF5ExtError: Problems
> reading records.
>
> So I suspect the problem is that DryExp is changing every time.
Yes, that's exactly the problem. You can't issue an operation that
modifies the number of rows of a table in the middle of a table Row
iterator. I'll try to document this later on.
What you can do is (untested):
listofBadNums = ['NJ451','AJ322','B321']
listofBadRows = []
for row in DryExp:
if row['CatalogNum'] in listofBadNums:
listofBadRows.append(row.nrow)
for i in listofBadRows:
DryExp.removeRows(i)
Hope this helps,
--
>0,0< Francesc Altet http://www.carabos.com/
V V Cárabos Coop. V. Enjoy Data
"-"
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Pytables-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/pytables-users