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

Python使用os、glob读取文件夹图片时报错/返回空列表如何解决?

问题根因与解决方案
  • 所有报错核心都是路径拼接错误和glob语法错误,不存在库本身的问题
  • os.listdir仅返回目标文件夹下的文件/文件夹名称,不包含父级路径,直接读取文件名会默认在当前脚本工作目录查找,自然找不到文件
  • glob路径中你错误使用了逗号分隔文件夹和后缀匹配规则,正确语法是用路径分隔符(/或\\)
  • 用path1遍历时报错找不到C,是因为你直接把路径字符串当成可迭代对象循环了,每次取单个字符,第一个字符就是C
  • 你给出的OpenCV测试代码还存在逻辑错误:未给image_list赋值就直接遍历,自然不会执行循环内的显示逻辑

正确实现代码

方法1:使用os模块实现

import os
from PIL import Image
import cv2

# 目标文件夹路径(建议用绝对路径避免工作目录变动问题)
img_dir = r'C:\Users\Kays_\PycharmProjects\CompVisionExam\Calibration_images'
# 也可以用相对路径:img_dir = 'Calibration_images'

image_list = []
for filename in os.listdir(img_dir):
    # 重点:拼接父级路径和文件名,得到完整路径
    full_path = os.path.join(img_dir, filename)
    # 过滤非jpg文件,避免误读文件夹/其他格式文件
    if not filename.lower().endswith('.jpg'):
        continue
    # PIL读取
    im = Image.open(full_path)
    image_list.append(im)
    # 如需OpenCV读取显示,替换为以下代码
    # img = cv2.imread(full_path)
    # cv2.imshow('img', img)
    # cv2.waitKey(1000)
# 关闭所有OpenCV窗口(如果用了OpenCV显示的话)
# cv2.destroyAllWindows()
print(image_list)

方法2:使用glob模块实现

import glob
from PIL import Image
import cv2

# 正确glob路径:用*匹配所有jpg文件,路径分隔符用/或者\\,不要用逗号
img_paths = glob.glob(r'C:\Users\Kays_\Documents\Exam_for_27\Dataset\Calibration_images\*.jpg')
# 工作目录下的路径也可以写:glob.glob(r'Calibration_images\*.jpg')

image_list = []
for full_path in img_paths:
    im = Image.open(full_path)
    image_list.append(im)
    # OpenCV显示逻辑同上
    # img = cv2.imread(full_path)
    # cv2.imshow('img', img)
    # cv2.waitKey(1000)
# cv2.destroyAllWindows()
print(image_list)

注意事项

  • OpenCV读取图片后如果直接结束进程,窗口会一闪而过,测试时可以最后加一行cv2.waitKey(0)等待用户按键后再关闭所有窗口
  • 如果确认路径正确还是读不到,先打印full_path变量,复制路径到资源管理器地址栏,确认可以直接打开对应图片

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:27:01