dampa
dampa

Reputation: 1

Python sees the file name but gives "[Errno 2] No such file or directory"

I am trying to get a bunch of images from a directory and python gives me this error: FileNotFoundError: [Errno 2] No such file or directory: 'File1.jpg'

But 'File1.jpg' is the first file in the directory. Here is the code including the error:

filenames = [os.path.join(dirname, fname) for fname in os.listdir(dirname)]

filenames = filenames[:100]
assert(len(filenames) == 100)

filenames = [fname_i for fname_i in os.listdir(dirname)
                if fname_i.endswith('.jpg')]

imgs = [plt.imread(fname)[..., :3] for fname in filenames]

fails with FileNotFoundError and the following traceback:

---------------------------------------------------------------------------
FileNotFoundError                         Traceback (most recent call last)
<ipython-input-9-bf6a187847c5> in <module>()
----> 1 imgs = [plt.imread(fname)[..., :3] for fname in filenames]

<ipython-input-9-bf6a187847c5> in <listcomp>(.0)
----> 1 imgs = [plt.imread(fname)[..., :3] for fname in filenames]

/Users/dampa/anaconda/lib/python3.5/site-packages/matplotlib/pyplot.py in imread(*args, **kwargs)
   2295 @docstring.copy_dedent(_imread)
   2296 def imread(*args, **kwargs):
-> 2297     return _imread(*args, **kwargs)
   2298 
   2299 

/Users/dampa/anaconda/lib/python3.5/site-packages/matplotlib/image.py in imread(fname, format)
   1304 
   1305     if ext not in handlers:
-> 1306         im = pilread(fname)
   1307         if im is None:
   1308             raise ValueError('Only know how to handle extensions: %s; '

/Users/dampa/anaconda/lib/python3.5/site-packages/matplotlib/image.py in pilread(fname)
   1282         except ImportError:
   1283             return None
-> 1284         image = Image.open(fname)
   1285         return pil_to_array(image)
   1286 

/Users/dampa/anaconda/lib/python3.5/site-packages/PIL/Image.py in open(fp, mode)
   2278             filename = str(fp.resolve())
   2279     if filename:
-> 2280         fp = builtins.open(filename, "rb")
   2281 
   2282     try:

FileNotFoundError: [Errno 2] No such file or directory: 'File1.jpg'

Upvotes: 0

Views: 1720

Answers (1)

Jean-Fran&#231;ois Fabre
Jean-Fran&#231;ois Fabre

Reputation: 140168

the first time, you're doing it right, adding directory name:

In [5]: filenames = [os.path.join(dirname, fname)
   ...:    ...:               for fname in os.listdir(dirname)]

but in your filter you're omitting to add directory name again.

That would be only repeats of Moinuddin's comment if it wasn't for a better solution: simply use glob to filter AND get absolute path:

import glob
filenames = glob.glob(os.path.join(dirname,'*.jpg'))

Upvotes: 1

Related Questions