On Mon, May 24, 2010 at 4:14 PM, Maria Liukis <liukis@usc.edu> wrote:
Hello everybody,

I'm using numpy V1.3.0 and ran into a case when numpy.loadtxt('foo.txt') raised an exception:

>>>import numpy as np
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages/numpy/lib/io.py", line 456, in loadtxt
   raise IOError('End-of-file reached before encountering data.')
IOError: End-of-file reached before encountering data.

if provided file 'foo.txt' is empty.

Would anybody happen to know if it's a feature or a bug? I would expect it to return an empty array.

Looking at the source for loadtxt

line 591
# Read until we find a line with some values, and use
        # it to estimate the number of columns, N.
        first_vals = None
        while not first_vals:
            first_line = fh.readline()
            if first_line == '': # EOF reached
                raise IOError('End-of-file reached before encountering data.')

So it looks like it is not a bug although I am not sure why returning an empty array would not be valid. But then what are you going to do with the empty array?



numpy.fromfile() handles empty text files:

>>> np.fromfile('foo.txt', sep='\t\n ')
array([], dtype=float64)

Would anybody suggest a graceful way of handling empty files with numpy.loadtxt() (except for catching an IOError exception)?

Many thanks,

NumPy-Discussion mailing list

Vincent Davis