From: Jeff R. <jr...@ya...> - 2013-06-04 16:35:52
|
Anthony, I am using numexpr 2.1 (latest) this is puzzling; doesn't matter what I pass (bytes or str) , same result? (column == 'str-2') > /mnt/code/arb/test/pytables-3.py(38)<module>() -> result = handle.root.test.table.readWhere(selector) (Pdb) handle.root.test.table.readWhere(selector) *** TypeError: string argument without an encoding (Pdb) handle.root.test.table.readWhere(selector.encode(encoding)) *** TypeError: string argument without an encoding (Pdb) ________________________________ From: Anthony Scopatz <sc...@gm...> To: Jeff Reback <je...@re...>; Discussion list for PyTables <pyt...@li...> Sent: Tuesday, June 4, 2013 12:25 PM Subject: Re: [Pytables-users] pytable 30 - encoding Hi Jeff, Have you also updated numexpr to the most recent version? The error is coming from numexpr not compiling the expression correctly. Also, you might try making selector a str, rather than bytes: selector = "(column == 'str-2')" rather than selector = "(column == 'str-2')".encode(encoding) Be Well Anthony On Tue, Jun 4, 2013 at 8:51 AM, Jeff Reback <jr...@ya...> wrote: anthony,where am I going wrong here? >#!/usr/local/bin/python3 >import tables >import numpy as np >import datetime, time >encoding = 'UTF-8' >test_file = 'test_select.h5' >handle = tables.openFile(test_file, "w") >node = handle.createGroup(handle.root, 'test') >table = handle.createTable(node, 'table', dict( >index = tables.Int64Col(), > column = tables.StringCol(25), >values = tables.FloatCol(shape=(3)), >)) > ># add data >r = table.row >for i in range(10): >r['index'] = i >r['column'] = ("str-%d" % (i % 5)).encode(encoding) >r['values'] = np.arange(3) >r.append() >table.flush() >handle.close() ># read >handle = tables.openFile(test_file,"r") >result = handle.root.test.table.read() >print("table data\n") >print(result) ># where >print("\nselector\n") >selector = "(column == 'str-2')".encode(encoding) >print(selector) >result = handle.root.test.table.readWhere(selector) >print(result) > >and the following out: > >[sheep-jreback-/code/arb/test] python3 pytables-3.py >table data >[(b'str-0', 0, [0.0, 1.0, 2.0]) (b'str-1', 1, [0.0, 1.0, 2.0]) >(b'str-2', 2, [0.0, 1.0, 2.0]) (b'str-3', 3, [0.0, 1.0, 2.0]) >(b'str-4', 4, [0.0, 1.0, 2.0]) (b'str-0', 5, [0.0, 1.0, 2.0]) >(b'str-1', 6, [0.0, 1.0, 2.0]) (b'str-2', 7, [0.0, 1.0, 2.0]) >(b'str-3', 8, [0.0, 1.0, 2.0]) (b'str-4', 9, [0.0, 1.0, 2.0])] >selector >b"(column == 'str-2')" >Traceback (most recent call last): >File "pytables-3.py", line 37, in <module> >result = handle.root.test.table.readWhere(selector) >File "/usr/local/lib/python3.3/site-packages/tables-3.0.0-py3.3-linux-x86_64.egg/tables/_past.py", line 35, in oldfunc >return obj(*args, **kwargs) >File "/usr/local/lib/python3.3/site-packages/tables-3.0.0-py3.3-linux-x86_64.egg/tables/table.py", line 1522, in read_where >self._where(condition, condvars, start, stop, step)] >File "/usr/local/lib/python3.3/site-packages/tables-3.0.0-py3.3-linux-x86_64.egg/tables/table.py", line 1484, in _where >compiled = self._compile_condition(condition, condvars) >File "/usr/local/lib/python3.3/site-packages/tables-3.0.0-py3.3-linux-x86_64.egg/tables/table.py", line 1358, in _compile_condition >compiled = compile_condition(condition, typemap, indexedcols) >File "/usr/local/lib/python3.3/site-packages/tables-3.0.0-py3.3-linux-x86_64.egg/tables/conditions.py", line 419, in compile_condition >func = NumExpr(expr, signature) >File "/usr/local/lib/python3.3/site-packages/numexpr-2.1-py3.3-linux-x86_64.egg/numexpr/necompiler.py", line 559, in NumExpr >precompile(ex, signature, context) >File "/usr/local/lib/python3.3/site-packages/numexpr-2.1-py3.3-linux-x86_64.egg/numexpr/necompiler.py", line 511, in precompile >constants_order, constants = getConstants(ast) >File "/usr/local/lib/python3.3/site-packages/numexpr-2.1-py3.3-linux-x86_64.egg/numexpr/necompiler.py", line 294, in getConstants >for a in constants_order] >File "/usr/local/lib/python3.3/site-packages/numexpr-2.1-py3.3-linux-x86_64.egg/numexpr/necompiler.py", line 294, in <listcomp> >for a in constants_order] >File "/usr/local/lib/python3.3/site-packages/numexpr-2.1-py3.3-linux-x86_64.egg/numexpr/necompiler.py", line 284, in convertConstantToKind >return kind_to_type[kind](x) >TypeError: string argument without an encoding >Closing remaining open files: test_select.h5... done > >------------------------------------------------------------------------------ >How ServiceNow helps IT people transform IT departments: >1. A cloud service to automate IT design, transition and operations >2. Dashboards that offer high-level views of enterprise services >3. A single system of record for all IT processes >http://p.sf.net/sfu/servicenow-d2d-j >_______________________________________________ >Pytables-users mailing list >Pyt...@li... >https://lists.sourceforge.net/lists/listinfo/pytables-users > > |