[Numpy-discussion] Py3: numpy.rec.array fails with open file

Christoph Gohlke cgohlke at uci.edu
Thu May 26 00:38:36 EDT 2011



On 5/25/2011 7:23 PM, Charles R Harris wrote:
>
>
> On Wed, May 25, 2011 at 7:29 PM, Christoph Gohlke <cgohlke at uci.edu
> <mailto:cgohlke at 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




More information about the NumPy-Discussion mailing list