Python PIL открыть изображение из определенного файла - PullRequest
0 голосов
/ 12 декабря 2018

Я справляюсь с библиотекой Pillow от Python.У меня есть папка (папка 1), в которой хранится код, а внутри этой папки - другая папка (папка 2), в которой находятся все изображения, которые я хотел бы редактировать / манипулировать.

Однако я смог толькополучить доступ к изображениям, когда они сохранены в папке 1, но не когда они сохранены только в папке 2.

Я использовал код:

from PIL import Image
import os

for k in os.listdir('.'):
    if k.endswith('.jpg'):
        i = Image.open(k)
        kn, kext = os.path.splitext(k)
        print(kn)

, который печатает имена всехимена файлов за вычетом расширения '.jpg':

MeisJeMetDeParel
StarryNight
TheSonOfMan

Затем я попытался сделать то же самое, получая доступ к изображениям только из их собственной определенной папки:

for k in os.listdir('testPictures'):
    if k.endswith('.jpg'):
        i = Image.open(k)
        kn, kext = os.path.splitext(k)
        print(kn)

, изменивкаталог с именем папки, в которой они хранятся (testPictures).Тем не менее, я получаю сообщение об ошибке:

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

Таким образом, кажется, что доступ к изображению в папке, так как он был в состоянии определить имя первого изображения в папке, но кодневозможно напечатать названия изображений, как это было возможно, когда и код, и изображения были сохранены вместе.Какие настройки можно внести в мой код, чтобы можно было распечатать изображения в папке testPictures?Спасибо

1 Ответ

0 голосов
/ 12 декабря 2018

Функция os.listdir возвращает путь относительно каталога, который вы указали, поэтому вам нужно os.path.join каталог с именем, которое вы получили:

for k in os.listdir('testPictures'):
    if k.endswith('.jpg'):
        i = Image.open(os.path.join('testPictures', k))
        kn, kext = os.path.splitext(k)
        print(kn)

Я мог бы предложить вместоВызвав os.listdir и проверив расширение вручную, вы можете вместо этого использовать модуль glob, а также избежать os.path.join имени каталога:

import glob
for k in glob.glob('testPictures/*.jpg'):
    i = Image.open(k)
    kn, kext = os.path.splitext(k)
    print(kn)
...