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

Christoph Gohlke cgohlke at uci.edu
Wed May 25 21:29:10 EDT 2011


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.

Christoph









More information about the NumPy-Discussion mailing list