On 5/25/2011 7:23 PM, Charles R Harris wrote: > > > On Wed, May 25, 2011 at 7:29 PM, Christoph Gohlke <cgoh...@uci.edu > <mailto:cgoh...@uci.edu>> wrote: > > Hello, > > the following code raises a ValueError on Python 3, but works as > expected with Python 2: > > > >> import sys, numpy > > >> fd = open(sys.executable, 'rb') > > >> numpy.rec.array(fd, dtype=[('_', 'b')]) > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "C:\Python32\lib\site-packages\numpy\core\records.py", line 799, > in array > raise ValueError("Unknown input type") > ValueError: Unknown input type > > > The problem seems to be the test for file objects in > numpy/compat/py3k.py: > > def isfileobj(f): > return isinstance(f, io.FileIO) > > If this is updated to include _io.BufferedReader, the type of `fd`, > numpy.rec.array works with file objects opened in 'rb' mode: > > def isfileobj(f): > return isinstance(f, (io.FileIO, io._io.BufferedReader)) > > Tested with numpy 1.6.0 on Windows. > > > Seems reasonable. Can you open a ticket and make a test for this? > > Chuck > >
Opened ticket #1843 <http://projects.scipy.org/numpy/ticket/1843> with test case and possible fix attached. Anyway, this is easy to work around by using numpy.rec.fromfile() instead of numpy.rec.array(). Christoph _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion