簡體   English   中英

Python PIL從特定文件打開圖像

[英]Python PIL open image from specific file

我正在使用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文件夾中的圖片? 謝謝

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM