Python PIL从特定文件打开图像

时间:2018-12-12 17:21:17

标签: python operating-system anaconda python-imaging-library

我正在使用Python的Pillow库。我有一个用于存储代码的文件夹(文件夹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 :(得分:1)

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)