Python, как импортировать все изображения из каталога?

#python

#python

Вопрос:

У меня проблемы с импортом файлов jpg в мой каталог. Я использовал приведенный ниже код, но когда я запускаю im.show(), он говорит, что im не определен. Кроме того, ничего не отображается для печати (имя файла) что я должен сделать, чтобы решить эту проблему?

 from PIL import Image
import glob

image_list = []
for filename in glob.glob('C:UsersIvansdataset*.jpg'): 
    print(filename)
    im=Image.open(filename)
    image_list.append(im)
  

Комментарии:

1. возможно, ваш глобус не получает никаких файлов. Я бы проверил правильность вашего пути, возможно, используйте pathlib, чтобы помочь вам с обработкой с путями

2. Я бы использовал os.listdir(), чтобы перечислить все ваши изображения.

3. Либо используйте r"C:Users..." , либо экранируйте обратную косую черту. glob Может отображаться другой путь, чем тот, который, по вашему мнению, вы вставляете в него… Также я считаю, что это должно быть C:\Users...

Ответ №1:

При использовании обратной косой черты Windows рассмотрите возможность использования необработанной строки, чтобы избежать синтаксического анализа экранированных символов, т.е.

 for filename in glob.glob(r'C:UsersIvansdataset*.jpg'): 
  

Ответ №2:

не уверен, что это правильно, но вы можете попробовать использовать os.listdir

 from PIL import Image
import glob
import os

image_list = []

dir = 'dir'
for filename in os.listdir(dir):
    print(filename)
    im=Image.open(f"{dir}/{filename}")
    image_list.append(im)
  

Комментарии:

1. да, я это исправил

2. Нет, я имею в виду, если вы не считаете, что это правильно, не публикуйте его. Проверьте свой код и убедитесь, что он работает. Или, по крайней мере, не пишите это в своем ответе…

3. В любом случае, мне кажется правильным… Может быть, я бы предпочел использовать filename = os.path.join(dir, filename) вместо форматирования строки

4. Также обратите внимание, что операционный код выполняет итерацию только по .jpg файлам, поэтому вы можете добавить if filename.endswith("jpg")