У меня есть изображения * .jpg в каталоге "собаки", и я могу получить доступ к первому из них, как показано ниже:
import os
os.chdir(os.path.expanduser('~/fastai/data/dogscats'))
cwd=os.getcwd()
dog=os.listdir(os.path.join(cwd,'valid/dogs'))[0]
print (dog)
dog.5535.jpg
проблема в том, что когда я пытаюсь построить изображение с помощью matplotlib, он не может найдите изображение:
%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)
FileNotFoundError: [Errno 2] No such file or directory: 'dog.5535.jpg'
Я попытался открыть собаку подушкой, но выдает ту же ошибку.
однако я могу прочитать «dog.5535.jpg», если помещу изображение на рабочий стол и укажу путь к plt.imread(). Я что-то упускаю?
Спасибо
@ g-anderson-Я пытался заменить 'dog .; в моем имени файла с '', но ошибка осталась той же






Из этих строк:
dog=os.listdir(os.path.join(cwd,'valid/dogs'))[0]
print (dog)
#OUT: dog.5535.jpg
похоже, что есть файл dog.5535.jpg с полным относительным путем (относительно текущего рабочего каталога) valid/dogs/dog.5535.jpg. Однако переменная dog содержит только имя файла. Поэтому, когда вы пытаетесь
%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)
Он ищет dog.5535.jpg в вашем текущем рабочем каталоге, где файла нет. Исходя из cwd, вам все равно нужно добавить остальную часть пути:
%matplotlib inline
import matplotlib.pyplot as plt
plt.imread(dog)
os.path.join('valid', 'dogs', dog)
#or os.path.join(cwd, 'valid', 'dogs', dog)
Обратите внимание, что я также изменил часть valid/dogs в функции path.join, поскольку указание разделителей путей в аргументе для path.join лучше, чем использование path.join.
@ FlyingTeller-Спасибо
Могут быть проблемы с точками в имени файла, пробовали ли вы открыть файл без точки или с точкой, замененной на подчеркивание? И второй сценарий запускается с того же места, что и первый?