You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JupyterLab读取嵌套目录图片时提示路径不存在的问题求助

解决PetImages数据集图片读取失败的问题

你的代码直接读取PetImages文件夹,但这个文件夹下只有Dog和Cat两个子文件夹,并没有图片文件。os.listdir()会列出这两个子文件夹,cv2.imread()尝试读取目录而非图片文件,就会触发“文件或目录不存在”的错误;另外Kaggle的这个数据集本身存在部分损坏的图片文件,也会导致读取失败。

方案1:递归遍历所有子文件夹

使用os.walk()递归遍历PetImages下的所有子文件夹,自动读取里面的图片,同时跳过无法读取的文件并打印提示:

import cv2
import os

def load_images_from_folder(root_folder):
    images = []
    for root, dirs, files in os.walk(root_folder):
        for filename in files:
            file_path = os.path.join(root, filename)
            # 先校验是否为文件,避免读取目录
            if os.path.isfile(file_path):
                img = cv2.imread(file_path)
                if img is not None:
                    images.append(img)
                else:
                    print(f"无法读取图片: {file_path}")
    return images

# 用原始字符串避免转义问题
folder_path = r'C:/Users/1234/Downloads/kaggle/PetImages'
images = load_images_from_folder(folder_path)

方案2:手动指定子文件夹

如果不需要递归,也可以直接指定Dog和Cat文件夹分别读取:

import cv2
import os

def load_images_from_folder(foldername):
    images = []
    for filename in os.listdir(foldername):
        file_path = os.path.join(foldername, filename)
        if os.path.isfile(file_path):
            img = cv2.imread(file_path)
            if img is not None:
                images.append(img)
            else:
                print(f"无法读取图片: {file_path}")
    return images

folder_path = r'C:/Users/1234/Downloads/kaggle/PetImages'
dog_images = load_images_from_folder(os.path.join(folder_path, 'Dog'))
cat_images = load_images_from_folder(os.path.join(folder_path, 'Cat'))
all_images = dog_images + cat_images

额外排查点

  • 校验路径有效性:打印print(os.path.exists(folder_path)),如果返回False,说明路径拼写错误,检查用户名、文件夹名称是否正确(注意大小写)。
  • 检查文件权限:确保当前用户拥有该文件夹的读取权限。
  • 处理损坏文件:运行代码后,打印出的“无法读取图片”路径对应的文件是损坏的,可直接删除这些文件避免后续报错。

内容的提问来源于stack exchange,提问作者regina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 12:22:30