loadtxt raises an exception on empty file

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 np.loadtxt('foo.txt') 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. 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, Masha -------------------- liukis@usc.edu

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 np.loadtxt('foo.txt') 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? Vincent
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, Masha -------------------- liukis@usc.edu
_______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
*Vincent Davis 720-301-3003 * vincent@vincentdavis.net my blog <http://vincentdavis.net> | LinkedIn<http://www.linkedin.com/in/vincentdavis>

You can just catch the exception and decide what to do with it: try: data = np.loadtxt('foo.txt') except IOError: data = 0 # Or something similar Nadav -----Original Message----- From: numpy-discussion-bounces@scipy.org on behalf of Maria Liukis Sent: Tue 25-May-10 01:14 To: numpy-discussion@scipy.org Subject: [Numpy-discussion] loadtxt raises an exception on empty file 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 np.loadtxt('foo.txt') 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. 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, Masha -------------------- liukis@usc.edu _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion
participants (3)
-
Maria Liukis
-
Nadav Horesh
-
Vincent Davis