我正在使用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文件夹中的图片? 谢谢
答案 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)